Elasticsearch - Temel Kavramlar

Elasticsearch, Apache Lucene tabanlı bir arama sunucusudur. Shay Banon tarafından geliştirilmiş ve 2010 yılında yayınlanmıştır. Şu anda Elasticsearch BV tarafından bakımı yapılmaktadır. En son sürümü 7.0.0'dır.

Elasticsearch, gerçek zamanlı dağıtılmış ve açık kaynaklı bir tam metin arama ve analiz motorudur. RESTful web hizmeti arayüzünden erişilebilir ve verileri depolamak için şema daha az JSON (JavaScript Object Notation) belgeleri kullanır. Java programlama dili üzerine inşa edilmiştir ve dolayısıyla Elasticsearch farklı platformlarda çalışabilir. Kullanıcıların çok büyük miktarda veriyi çok yüksek hızda keşfetmelerini sağlar.

Genel Özellikler

Elasticsearch'ün genel özellikleri aşağıdaki gibidir -

  • Elasticsearch, petabaytlarca yapılandırılmış ve yapılandırılmamış veriye kadar ölçeklenebilir.

  • Elasticsearch, MongoDB ve RavenDB gibi belge depolarının yerine kullanılabilir.

  • Elasticsearch, arama performansını iyileştirmek için normalsizleştirme kullanır.

  • Elasticsearch, popüler kurumsal arama motorlarından biridir ve şu anda Wikipedia, The Guardian, StackOverflow, GitHub gibi birçok büyük kuruluş tarafından kullanılmaktadır.

  • Elasticsearch bir açık kaynaktır ve Apache lisansı sürüm 2.0 altında mevcuttur.

Anahtar kavramlar

Elasticsearch'ün temel kavramları aşağıdaki gibidir -

Düğüm

Elasticsearch'ün çalışan tek bir örneğini ifade eder. Tek fiziksel ve sanal sunucu, RAM, depolama ve işlem gücü gibi fiziksel kaynaklarının yeteneklerine bağlı olarak birden çok düğümü barındırır.

Küme

Bir veya daha fazla düğümden oluşan bir koleksiyondur. Küme, tüm veriler için tüm düğümlerde toplu indeksleme ve arama yetenekleri sağlar.

Dizin

Farklı türdeki belgelerin ve özelliklerinin bir koleksiyonudur. Dizin, performansı iyileştirmek için parça kavramını da kullanır. Örneğin, bir dizi belge bir sosyal ağ uygulamasının verilerini içerir.

Belge

JSON biçiminde tanımlanan belirli bir şekilde alanların bir koleksiyonudur. Her belge bir türe aittir ve bir dizinin içinde yer alır. Her belge, UID adı verilen benzersiz bir tanımlayıcıyla ilişkilendirilir.

Kırık

Dizinler yatay olarak parçalara bölünmüştür. Bu, her bir parçanın belgenin tüm özelliklerini içerdiği ancak dizinden daha az sayıda JSON nesnesi içerdiği anlamına gelir. Yatay ayırma, parçacığı herhangi bir düğümde depolanabilen bağımsız bir düğüm haline getirir. Birincil parça, bir dizinin orijinal yatay parçasıdır ve daha sonra bu birincil parçalar, kopya parçalara kopyalanır.

Kopyalar

Elasticsearch, bir kullanıcının dizinlerinin ve parçalarının kopyalarını oluşturmasına olanak tanır. Çoğaltma, yalnızca arıza durumunda verilerin kullanılabilirliğini artırmaya yardımcı olmakla kalmaz, aynı zamanda bu eşlemelerde paralel arama işlemi gerçekleştirerek arama performansını da artırır.

Avantajlar

  • Elasticsearch, neredeyse her platformda uyumlu olmasını sağlayan Java üzerinde geliştirilmiştir.

  • Elasticsearch gerçek zamanlıdır, yani bir saniye sonra eklenen belge bu motorda aranabilir

  • Elasticsearch dağıtılmıştır, bu da herhangi bir büyük organizasyonda ölçeklendirmeyi ve entegre etmeyi kolaylaştırır.

  • Elasticsearch'te bulunan ağ geçidi konseptini kullanarak tam yedekleme oluşturmak kolaydır.

  • Elasticsearch'te çok kiracılığın yönetimi Apache Solr ile karşılaştırıldığında çok kolaydır.

  • Elasticsearch, JSON nesnelerini yanıt olarak kullanır, bu da Elasticsearch sunucusunu çok sayıda farklı programlama diliyle çağırmayı mümkün kılar.

  • Elasticsearch, metin oluşturmayı desteklemeyenler dışında hemen hemen her belge türünü destekler.

Dezavantajları

  • Elasticsearch, CSV, XML ve JSON formatlarında mümkün olduğu Apache Solr'dan farklı olarak istek ve yanıt verilerinin işlenmesi açısından çoklu dil desteğine sahip değildir (yalnızca JSON'da mümkündür).

  • Bazen, Elasticsearch'ün Bölünmüş beyin durumları sorunu vardır.

Elasticsearch ve RDBMS arasında karşılaştırma

Elasticsearch'te indeks, RDBMS'deki (İlişki Veritabanı Yönetim Sistemi) tablolara benzer. Her tablo, tıpkı her indeksin Elasticsearch'teki bir belge koleksiyonu olduğu gibi, bir satırlar koleksiyonudur.

Aşağıdaki tablo, bu terimler arasında doğrudan bir karşılaştırma sağlar−

Elasticsearch RDBMS
Küme Veri tabanı
Kırık Kırık
Dizin Tablo
Alan Sütun
Belge Kürek çekmek