Merhaba. Elasticsearch'teki kritik veri yapıları olan Inverted Index ve BKD Tree index tiplerini açıklamaya çalışacağım.
Inverted Index (Ters Çevrilmiş İndeks)
Temel Çalışma Prensibi: Anahtar görevi, kelimelerin hangi dökümanlarda bulunduklarını takip etmektir. Bu tersine çevrilmiş bir yapıya benzer: Döküman kimlikleri yerine, her benzersiz kelime (term) için o kelimeyi içeren bir döküman listesi tutulur.
Text Verisi İndeksleme: Arama motorlarının kalbidir. Text verisindeki sözcükler ayrıştırılır (tokenize edilir), gereksiz sözcüklerden arındırılır (stopword removal) ve köklerine indirgenir (stemming). Bu işlenen sözcükler için ters index yapısı oluşturulur.
Hızlı Arama: Bir kelime aradığınızda, inverted index yapısı o kelimeyi hangi dökümanlarda bulabileceğini hızla söyleyebilir. Sonrasında bu dökümanlara daha detaylı bakılır ve ilgili dökümanlar sıralanarak sunulur.
Avantajları:
Text aramalarında çok hızlıdır.
Belirli bir kelimeyi içeren dökümanları bulmada etkilidir.
Dezavantajları
Sayısal veya coğrafi veri türleri için ideal değildir.
Depolama açısından yer kaplayabilir (özellikle yüksek frekanslı, benzersiz kelimelerin fazla olduğu durumlarda)
BKD Trees
Temel Çalışma Prensibi Çok boyutlu verileri etkili biçimde saklamak ve sorgulamak için özel bir ağaç veri yapısıdır. Sayısal, tarih, coğrafi konum vb. verileri verimli sorgulamak için kullanılır.
Çok Boyutlu Uzayı Bölümlere Ayırma: Veri noktalarını uzayda hiyerarşik olarak bölümlendirerek çalışır. Her seviyede, uzay bir eksen boyunca ikiye bölünür. Bu, benzer veri noktalarının kümelenmesini sağlar.
Hızlı Aralık Sorgulamaları: BKD ağaçları "bu coğrafi koordinatların 5 km çapındaki alanında neler var?" gibi aralık-tabanlı sorgulamalarda çok iyidirler.
Avantajları:
Sayısal, coğrafi, tarih gibi çok boyutlu verileri hızlıca sorgulama.
Aralık (range) ve yakınlık aramalarında verimli olma.
Dezavantajları:
Tek boyutlu text aramaları için inverted indexler kadar hızlı değildirler.
Elasticsearch Kullanımı
Elasticsearch akıllıca veri türlerinizi analiz eder ve uygun durumda:
Text verisi için inverted indexler kullanır.
Sayısal, coğrafi ve diğer çok boyutlu veriler için BKD ağaçları kullanır.
Özetle:
Inverted Index: Tam kelime aramalarında çok hızlı.
BKD Trees: Sayısal/coğrafi veri aramalarında ve aralık sorgulamalarında çok hızlı.