Elasticsearch
- Okunuşu
- ilastik sörç
Kısaca
Elasticsearch, JSON belgelerini indeksleyip büyük veri üzerinde hızlı tam metin arama, filtreleme ve toplama yapan dağıtık bir arama ve analiz motorudur.
Elasticsearch nedir?
Elasticsearch ilk olarak 2010'da Shay Banon tarafından yayımlandı ve bir arama kütüphanesi olan Apache Lucene üzerine kuruludur. Ona ürünler, makaleler ya da log satırları gibi JSON belgeleri gönderirsiniz; o da ters indeks (inverted index) kurar: her kelimeden o kelimeyi içeren belgelere giden bir harita. Milyonlarca belge arasından eşleşenleri milisaniyeler içinde bulmasını sağlayan şey bu indekstir.
Aramalar birebir eşleşmenin ötesine geçer. Elasticsearch metni kelimelere ayırır, büyük-küçük harfi ve kelime eklerini yok sayabilir, sonuçları alakaya göre sıralar, yazım hatalarını tolere eder ve eşleşen kısımları vurgular. Ayrıca toplama da yapar; örneğin ülke başına siparişleri sayar ya da dakika başına hata oranlarını gösterir. Bu yüzden aramanın yanı sıra analiz için de kullanılır.
Veri, bir kümedeki (cluster) düğümlere dağıtılmış shard'lara bölünür ve güvenlik için kopyaları (replica) tutulur; böylece makine eklenerek ölçeklenir. Çoğu zaman eskiden ELK adı verilen Elastic Stack'in bir parçası olarak kullanılır: Logstash ya da Beats logları toplar, Elasticsearch onları saklayıp indeksler, Kibana da panolarda gösterir.
Sık yapılan bir yanlış, Elasticsearch'ün ana veritabanı olması gerektiği düşüncesidir. Arama hızı için tutarlılıktan bir miktar ödün verdiğinden, genellikle ana veritabanından ya da bir log hattından beslenen ikincil bir depodur. Lisansı 2021'de değişti; bu da AWS'nin büyük ölçüde aynı şekilde çalışan bir çatallama olan OpenSearch'ü başlatmasına yol açtı.
Önemli noktalar
- Elasticsearch, Lucene üzerine kurulu dağıtık bir arama ve analiz motorudur.
- Ters indeks, hızlı tam metin arama için kelimeleri belgelere eşler.
- Alakaya göre sıralar, yazım hatalarını tolere eder ve toplamalar hesaplar.
- Veri bir küme genelinde shard'lara bölünür ve kopyalanır.
- Genellikle bir ana veritabanının yerini almaz, onu tamamlar.
Örnek
# Add a document to the "products" index
curl -X POST "localhost:9200/products/_doc" -H "Content-Type: application/json" -d '
{ "name": "Wireless keyboard", "price": 49 }'
# Full-text search; "keybord" still matches thanks to fuzziness
curl -X GET "localhost:9200/products/_search" -H "Content-Type: application/json" -d '
{ "query": { "match": { "name": { "query": "keybord", "fuzziness": "AUTO" } } } }'Sık sorulan sorular
Elasticsearch bir veritabanı mı?
Veriyi saklayıp geri getirdiği için veritabanı denebilir; ama bir arama ve analiz motoru olarak tasarlanmıştır ve genellikle asıl doğru kaynak olarak kalan bir birincil veritabanının yanında tutulur.
ELK yığını nedir?
ELK; Elasticsearch, Logstash ve Kibana'nın kısaltmasıdır: Logstash logları toplayıp işler, Elasticsearch onları indeksler, Kibana da görselleştirir. Beats eklenince adı artık Elastic Stack oldu.
OpenSearch nedir?
OpenSearch, Elastic lisansını değiştirdikten sonra AWS'nin 2021'de başlattığı, Elasticsearch'ün açık kaynaklı bir çatallamasıdır. Çok benzer şekilde çalışır ve bugün Linux Foundation çatısı altında sürdürülür.
İlgili sayfalar
- Tam Metin AramaVeritabanları, s. 35Tam metin arama, verilen sözcükleri ya da ifadeleri içeren dokümanları bir metin indeksinde arayarak bulan ve sonuçları alaka düzeyine göre sıralayan tekniktir.
- Doküman VeritabanıVeritabanları, s. 9Doküman veritabanı, kayıtları genellikle JSON benzeri, kendi içinde bütün dokümanlar olarak saklayan, alanları kayıttan kayda değişebilen NoSQL veritabanıdır.
- ShardingVeritabanları, s. 28Sharding, bir veritabanının verisini shard adı verilen birkaç sunucuya bölerek ölçeklendirme yöntemidir; her biri toplamın yalnızca bir kısmını saklar ve işler.
- LoglamaDevOps ve Bulut, s. 32Loglama, çalışan bir programdaki hata ve istek gibi olaylar hakkında zaman damgalı mesajlar kaydetme pratiğidir; insanlar bunları sonradan inceleyebilir.
- GözlemlenebilirlikDevOps ve Bulut, s. 22Gözlemlenebilirlik, çalışan bir yazılım sisteminin içinde olup biteni log, metrik ve trace verilerini toplayıp analiz ederek anlayabilme yeteneğidir.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin