1.Elastic Search ve Çalışma Mantığı

 Elastic Search Nedir ?

 ElasticSearch adından da anlaşılabileceği üzere son derece esnek yapıda kullanabileceğimiz açık kaynak kodlu bir arama motorudur. ElasticSearch üzerinde büyük veriyi indeksleyerek saklayabilir ve bu veriye hızlı bir şekilde erişebiliriz.

Burada sakladığımız veri indekslenmiş döküman olarak düşünülebilir. Özellikle büyük veri üzerinde sorgulama işlemlerini hızlı bir şekilde gerçekleştirebilmek mümkündür. İşlemek istediğiniz veriyi ElasticSearch içerisinde tutarak ilişkisel veri tabanlarına kıyasla daha performanslı işlemler gerçekleştirebilirsiniz.

Bununla birlikte güçlü avantajları vardır.

  • Yüksek ölçeklenebilirlik , Elasticsearch dağıtık ve kolay ölçeklenebilir bir yapıya sahiptir.
  • Şema bilgisi gerekmeksizin veri indeksleyebilme
  • Restful api desteği
  • Elasticsearch gerçek zamanlıdır,diğer bir deyişle ekleme işleminden bir kaç saniye sonra elastikte aranılabilir hale gelir.
  • Gateway konseptlerini kullanarak backup yaratmak oldukça kolaydır.
  • Elasticsearch’ın responsenun json olması bir çok dil tarafından ortak kullanılabilirlik sağlar.


Temel Elastic Search Kavramları

 1. Index : ElasticSearch üzerinde veri indekslenerek json formatında tutulur. Yani indexler, Json belgeler topluluğudur. Indexi Relational Databasedeki  Database kavramı gibi düşünebiliriz.

 2. Type : Veritabanı yönetim sistemlerinde kullandığımız tablolar gibi düşünebiliriz. Index içerisindeki verileri mantıksal olarak bölümlememizi sağlar. Örneğin e-ticaret sistemleri için ürünler,kategoriler,log bilgileri gibi verilerin her birini bir type olarak düşünebiliriz. Bir index içerisinde birden fazla type barındırabiliriz.

 3. Mapping :  Amacı, ilgili dökümanın arama motoruna nasıl aktarılacağının tanımlanmasıdır. Kısaca veritabanında isimlendirdiğimiz bir schema’dır diyebiliriz.

 4. Document: ElasticSearch’deki her bir kayda, yani row’a document denir.

 5. Field: Her bir döküman içindeki alana, field denir. Yani DB’deki bildiğiniz column.

 6. Cluster : Bir veya daha fazla düğümün bir koleksiyonudur. Cluster , tüm veriler için toplu dizin oluşturma ve arama yetenekleri sağlar. Yani tüm elastic search instancelarini bir arada tutan yapı

 7. Node : Elasticsearch’in tek bir çalışan örneğini ifade eder. Tek fiziksel ve sanal Sunucu; RAM, depolama ve işleme gücü gibi fiziksel kaynaklarının yeteneklerine bağlı olarak birden çok düğüm barındırır.

       7.a.  Master Node : Master node aynı cluster altındaki tüm nodeların masterı gibi çalışır. Master node index yaratma, silme ve tracking etme gibi işlemlerden sorumludur.
 
       7.b .Master Eligible Node : elastik searchteki bir property true seçilirse eligible node master node olarak ayarlanır. Eğerki master nodumuzun olduğu server fail olursa master eligible nodelar çalışır.

       7.c. Data node :  Datayı tutar ve data ile ilişkili operasyonları yürütür. CRUD, SEARCH ve AGGREGATİONS

       7.d. Ingest node :  Gerçek indekslenme meydana gelmeden önceki işlemleri gerçekleştiren dökümanç 

      7.e. Tribe Node : birden fazla clusteri bağlar ve bağlı clussterlar arasındaki search ve operasyonları yönetir.

  8. Shard : Indexler yatay olarak parçalara ayrılı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.

   Elasticsearch Nasıl Çalışır ?

Bir veri yani document kaydedilirken, veri içerisindeki alanlar yani fieldlar “Apache Lucene” altyapısı kullanılarak indexlenir. Bu şekilde bir kelimenin hangi row’da yani document’da geçtiği indexlenir. Daha sonra ilgili keyword aranırken bu büyük veri kümesi içerisinde değil de, bu oluşturulan index listesi içerisinde arama yapılır.  Böylece istenen arama sonucuna, çok büyük bir hızda ulaşılabilir.

Replica : Tamamen güvenlik amaçlı çalışan, her verinin bir kopyasının bulunduğu başka makinalardır. Böylece bir makina çöktüğünde replica veya replicalarından biri devreye girebilecektir. Örneğin aşağıda 3 Node’lu 3 Shardingli bir yapı söz konusudur. Ve her bir shard’ın 1 yedeği, yani 1 replicası bulunmaktadır. Sonuçta aşağıdaki örnekde 3 Node,3 Shard ve 1 Replica mevcuttur. Toplamda 6 sunucu bulunmaktadır.

NOT:  Bir diğer  konu , her bir Shard’ın Replicasının başka bir Node’da bulunması gerekir.