Bir Bakışta ElasticSearch
“A world where everyone creates content gets confusing pretty quickly without a good search engine”- Ethan Zuckerman
Hayatımızın dijitalleşmesi ile birlikte , kontrol edilemez bir şekilde sürekli veri ürettiyoruz. Petabyte..exabyte’lar seviyesine ulaşan ve big data dediğimiz bu veri yığınları arasında kaybolmamak için elimizi güçlendirecek teknolojilere ihtiyaç duyuyoruz. Zuckerman’ın da belirttiği gibi “iyi bir arama motoruna sahip değilsek bu veri yığınları içinde kafa karışıklığı yaşamaya mahkum olacağız”. İşte tam da bu noktada bir teknoloji imdadımızı yetişiyor
ElasticSearch, Apache Lucene üzerine kurulmuş, Java ile geliştirilmiş açık kaynak (open source) kodlu bir full text (metin) arama motoru ve veri analiz aracıdır. Veri saklama biçimi ilişkisel değil documented oriented şeklindedir. Bu ürünü big data (büyük veri) kavramının geçtiği orta ve büyük ölçekli işletmelerde görebiliriz. Herbiri farklı kulanım senaryoları ile organizsayonlarına ES’yi, dahil etmiş, eğitimden sağlığa, finanstan, perakendeye pek çok şirket göze çarpmaktadır. Aşağıda ElasticSearch kullanan dünya devi firmalardan bazılarını görebilirsiniz.
Bu ürünü kullanan şirketler ve kullanım senaryoları ile ilgili daha fazla bilgiye bu linkten ulaşabilirsiniz. Şimdi Elasticsearch’ün en belirgin avantajlarına bakalım:
- Cluster yapısı çok basittir
- Rakiplerine göre çok fazla kaynak tüketmez
- Kendi içinde yüksek erişilebilirlik (high availability) sunar
- İndexleme mantığı olduğu için hızlı arama yapar
- Doküman ve indeksleme kavramı çok kullanılır
- Dokümanları JSON olarak indexler
- Mapping kavramı vardır. Bir belgenin arama motoruna nasıl aktarılması gerektiğini tanımlama sürecidir
- Shared ve Replica kavramı vardır
ElasticSearch bir cluster yapısına sahiptir. Böylece büyük veri kümelerini kaydetmek istediğimizde ve yüksek trafik aldığımızda sisteme yeni makinelar ekleyerek yapımızı ölçeklendirebiliriz. Cluster içinde node’lar vardır ve her bir node üzerinde ES çalışır. Bu sistem ile ilgili şunları söyleyebiliriz:
- Kendi içinde yüksek erişilebilirlik(high availability) sunar
- İndexleme mantığı olduğu için hızlı arama yapar
- Doküman ve indeksleme kavramı çok kullanılır
- Dokümanları JSON olarak indexler
- Mapping kavramı vardır. Bir belgenin arama motoruna nasıl aktarılması gerektiğini tanımlama sürecidir
- Shared ve Replica kavramı vardır
ElasticSearch ile ilgili bilinmesi gereken iki önemli kavram Shared ve Replica’nın neler olduğuna bakalım.
Shared: ElasticSearch bir cluster yapısına sahiptir. Böylece büyük veri kümelerini kaydetmek istediğimizde ve yüksek trafik aldığımızda sisteme yeni makinelar ekleyerek yapımızı ölçeklendirebiliriz. Cluster içinde node’lar vardır her bir node üzerinde ES çalışır. Node’lar birbirleri ile haberleşir. Node’lar içinde de shard’lar çalışır. Shard’lar store edilmiş olan document’ların tutulduğu küçük birimlerdir. Node lar içerisinde çalışan shard’ lar aslında Apache Lucene uygulamalarıdır(instance). Verilerin indexlenmesinden sorumludur.
Replica: Shard’ın devre dışı kalması ihtimaline karşı index shard’larının bir veya birden çok kopyasının oluşturulabilmesini sağlayan replica shard (replika) yapısı bulunur. Bu yüksek erişilebilirlik için önemlidir. Shared ve Replica kavramı ES mimarisi içi oldukça önemlidir. Detaylar için şu linke bakabilirsiniz. ES’yi kurmak ve denemek istiyorsanız bu link size yol gösterecektir. Kendi sunucu ortamınıza kurmak istemezseniz veya donanım kaynağınız yok ise Elastic firmasının Cloud ortamından bu ürünü hizmet alarak satın alıp kullanabilirsiniz. Bunun dışında Elastic firmasının Azure , AWS ve Google ile yaptığı işbirlikleri sayesinde , ES’yi diğer bu bulut hizmet sağlayıcılardan da satın alarak kullanabilirsiniz.
ES’nin kendisi ücretsizdir. Cloud ortamından, ES’nin ihtiyaç duyduğu donanımı, kullandığın kadar öde, biçiminde hizmet olarak satın almış oluyorsunuz. ES ile entegre X-pack lisansı raporlama eklentisidir ve ücretlidir. Ayrıca ES ile ilgili danışmanlık ve support talebiniz olursa bir de bunlara ücret ödemeniz gerekir.
Elastic’in bulut destekli çalışan ürün ailesini, yani Elastic Stack ürünlerini ve temel işlevlerini aşağıdaki resimde görebilirsiniz.
ElasticSearch’ü loglama, taşıma ve raporlama amacıyla kullanmak isterseniz yine Elastic firmasının sağlamış olduğu üç önemli ürün bulunmaktadır. Bunlar;
Kibana : ElasticSearch için hazırlanmış, zengin raporlar ve görsel çıktılar almanızı sağlar. ElasticSearch’e kaydedilen logları anlık olarak izlemenizi sağlar ve ihtiyaç duyduğunuzda grafiksel istatistikler çıkartabilen bir web uygulamasıdır.
Beats: Verilerinizi ElasticSearch‘e taşımanızı sağlayan bir platformdur.
Logstash: Logları toplayan, işleyen ve ES’ye aktaran bir üründür.Input, Filter ve Output olarak 3 konfigurasyon dosyası vardır. Data Input ile gelir ve okur , filtreler sonrasında output’a gönderir. ElasticSearch isminin hakkını verecek kadar elastik bir arama motoru diyebiliriz. Hem kullanım kolaylığı, hem de çok fazla kaynak tüketmemesi açısından oldukça önemli bir teknoloji.