ElasticSearch ve Kibana ile Büyük Veriye Giriş

Elasticsearch, açık kaynaklı bir metin arama ve analiz motorudur. Veri depolama, arama, analiz ve görselleştirme işlemleri için kullanılan bir yazılımdır. Elasticsearch, özellikle büyük miktardaki yapılandırılmamış veya yarı yapılandırılmış verilerin (metin, loglar, zaman serileri vb.) hızlı ve etkili bir şekilde aranması, filtrelenmesi ve analiz edilmesi gereken senaryolarda tercih edilir.

ElasticSearch'ün Temel Özellikleri Nelerdir?

Arama ve Sorgulama: Elasticsearch, metin tabanlı verileri hızlı bir şekilde aramak ve sorgulamak için güçlü bir motor sunar. Metin içeriği üzerinde tam metin araması yapabilir, sorgu önerileri sağlayabilir ve sıralama işlemleri gerçekleştirebilir.

Ölçeklenebilirlik: Elasticsearch, yatay ölçeklenebilir bir yapıya sahiptir, yani daha fazla veriyi işlemek için yeni düğümler eklemek mümkündür. Bu sayede büyüyen veri miktarlarına kolayca uyum sağlayabilir.

Dağıtık ve Yüksek İşlem Kapasitesi: Elasticsearch, verileri parçalara böler ve bu parçaları farklı düğümler arasında dağıtarak işleme tabi tutar. Bu sayede yüksek hızda arama ve sorgulama işlemleri gerçekleştirilebilir.

Çeşitli Veri Türleri: Elasticsearch sadece metin tabanlı verileri değil, aynı zamanda yapılandırılmış olmayan verileri (örneğin JSON formatında), zaman serilerini, coğrafi verileri ve daha fazlasını işleyebilir.

Analiz ve Görselleştirme: Elasticsearch, verileri analiz etmek ve grafiklerle görselleştirmek için Kibana adlı bir araçla entegre edilebilir.

Elastic Stack (ELK Stack): Elasticsearch, Logstash (veri akışını işleme ve düzenleme aracı) ve Kibana (veri görselleştirme ve analiz aracı) ile birlikte kullanıldığında ELK Stack adını alır. Bu üç bileşen bir araya geldiğinde, log yönetimi, izleme, analiz ve görselleştirme için kapsamlı bir çözüm sunar.

ElasticSearch Kullanım Alanları Nelerdir?

Elasticsearch, çeşitli kullanım alanlarında başarılı bir şekilde kullanılabilen çok yönlü bir arama, analiz ve veri saklama platformudur. Elasticsearch'ün kullanım alanlarından bazıları şunlardır:

Metin Arama ve İndeksleme: Elasticsearch, metin tabanlı verileri hızlı ve etkili bir şekilde arayabilir ve indeksleyebilir. Bu, web sitelerindeki arama motorlarından belge yönetim sistemlerine kadar birçok alanda faydalıdır.

Log ve İzleme Analizi: Elasticsearch, büyük miktardaki log verilerini depolayabilir, analiz edebilir ve izlenebilir hale getirebilir. Bu, sistem ve uygulama izleme, hata ayıklama ve performans analizi için kullanışlıdır.

Zaman Serisi Verileri: Elasticsearch, zamanla değişen verileri (örneğin sensör verileri, finansal veriler, hava durumu gibi) saklamak ve analiz etmek için idealdir. Verileri zaman damgalarına göre indeksleyerek hızlı sorgulama yapılabilir.

Coğrafi Veriler: Elasticsearch, coğrafi verileri depolamak ve coğrafi konum temelli sorgulamalar yapmak için kullanılabilir. Bu, haritalama ve yer tabanlı uygulamalar için önemlidir.

E-ticaret ve Ürün Arama: E-ticaret platformları, müşterilere ürün arama, filtreleme ve sıralama imkanı sunmak için Elasticsearch'i kullanabilir. Ürün kataloglarını hızlıca tarayabilir ve müşterilerin istedikleri ürünleri bulmalarını kolaylaştırabilir.

Biyomedikal ve Bilimsel Araştırma: Bilim insanları, büyük miktardaki araştırma verilerini indeksleyebilir ve analiz edebilir. Bu, ilaç keşfi, genetik analiz ve diğer araştırma alanlarında kullanışlıdır.

Sosyal Medya Analizi: Sosyal medya platformları veya diğer internet tabanlı platformlar, kullanıcı etkileşimlerini analiz etmek ve içerikleri sorgulamak için Elasticsearch'i kullanabilir.

Güvenlik ve Tehdit İzleme: Elasticsearch, ağ güvenliği ve tehdit izleme için kullanılabilir. Log verilerini analiz ederek anormal davranışları tespit etmek ve güvenlik olaylarını izlemek mümkündür.

İş Zeka ve Veri Analizi: Elasticsearch, işletmelerin büyük veri kümelerini analiz etmelerine ve iş zekası çıkarabilmelerine yardımcı olabilir. Verileri hızlı bir şekilde sorgulayarak önemli bilgileri keşfedebilirler.

Bunlar ElasticSearch'ün kullanım alanına verilebilecek örneklerin başında gelir. Kullanım alanları burada saydıklarımla sınırlı değildir. :)

ElasticSearch Veriyi Nasıl Saklar?

Elasticsearch, veriyi saklamak için dağıtık ve ölçeklenebilir bir yapı kullanır. Verilerin saklanması ve yönetimi, Elasticsearch'in bir dizi bileşeni aracılığıyla gerçekleştirilir. Temel olarak, veriler "indeksler" olarak adlandırılan mantıksal birimlerde saklanır.

Elasticsearch'in veri saklama yaklaşımının temel adımları şunlardır;

İndeks Oluşturma: Elasticsearch'e veri eklemek için öncelikle bir "indeks" oluşturmanız gerekir. Bir indeks, belirli türdeki verileri içeren bir veri koleksiyonunu temsil eder. Örneğin, bir e-ticaret platformunda ürünler veya bir log analiz uygulamasında log kayıtları için ayrı indeksler oluşturabilirsiniz.

Belge Ekleme: Her bir veri öğesi Elasticsearch'te bir "belge" olarak adlandırılır. Bir indekse veri eklemek için JSON formatında belgeler oluşturursunuz. Bu belgeler, indeksin içine eklenir ve indeksin veri koleksiyonunu temsil eder.

Belge Dağıtımı: Elasticsearch, verileri belge seviyesinde dağıtır. Belirli bir indeks içindeki belgeler farklı "şardlar" (shard) olarak adlandırılan parçalara bölünür. Her bir şard, farklı Elasticsearch düğümlerinde saklanabilir. Bu dağıtık yapı, ölçeklenebilirlik ve yüksek performans sağlar.

Şardlar (shard) ve Replicalama: Her bir şard (shard), verilerin bir parçasını içerir. Bir indeks genellikle birden fazla şarddan oluşur. Ayrıca, her bir şardın bir veya daha fazla "kopyası" vardır, bu da "replicalama" olarak adlandırılır. Replicalama, yedekleme amaçlı ve yük dengelemesi için kullanılır.

Veri Dağıtımı: Elasticsearch düğümleri arasında veri dağıtımı ve replikasyon otomatik olarak gerçekleşir. Bu sayede veri kaybı durumunda veya düğüm arızalarında veri korunabilir ve sistem yüksek kullanılabilirlik sağlar.

Elasticsearch, bu veri saklama modeli sayesinde büyük miktardaki veriyi hızlı ve güvenilir bir şekilde saklayabilir, arayabilir ve analiz edebilir. Dağıtık ve ölçeklenebilir yapısı, uygulama ihtiyaçlarına göre genişletilebilir ve performansı artırılabilir.

Kibana

Kibana, Elasticsearch ile birlikte kullanılan açık kaynaklı bir veri görselleştirme ve analiz aracıdır. Elasticsearch ile depolanan verileri keşfetmek, analiz etmek ve bu verileri çeşitli grafikler, tablolar ve görsel öğelerle görselleştirmek için kullanılır.

Kibana'nın başlıca özellikleri şunlardır:

Görselleştirme: Kibana, verileri çizgi grafikleri, sütun grafikleri ve pasta grafikleri gibi çeşitli grafik türleri ve tablolarla görselleştirmenizi sağlar. Bu, verilerin anlamını daha hızlı ve kolay bir şekilde çıkarmaya yardımcı olur.

Dashboard Oluşturma: Birden fazla grafik, tablo ve görseli bir araya getirerek anlamlı ve özelleştirilebilir panolar oluşturmanıza olanak tanır. Bu panolar, verilerinizi takip etmek ve analiz etmek için merkezi bir nokta sağlar.

Veri Keşfi ve Sorgulama: Kullanıcı dostu arayüzü sayesinde Elasticsearch verilerinizi arayabilir, sorgulayabilir ve filtreleyebilirsiniz. Veri keşfi ve analiz işlemleri için güçlü bir araçtır.

Elasticsearch'le Entegrasyon: Kibana, Elasticsearch ile sıkı bir şekilde entegre edilmiştir. Elasticsearch verilerini Kibana aracılığıyla hızlıca keşfedebilir ve analiz edebilirsiniz.

Veri Haritalama: Coğrafi verileri haritalamak ve görselleştirmek için kullanışlı bir araçtır. Coğrafi verileri harita üzerinde işaretlemek ve analiz etmek mümkündür.

Zaman Serisi Analizi: Zaman serisi verilerini analiz etmek ve görselleştirmek için özel araçlar sunar. Bu, zaman içindeki değişiklikleri anlamak ve trendleri belirlemek için faydalı olabilir.

Kullanıcı Yetkilendirmesi ve Erişim Kontrolü: Kibana, kullanıcıların ve rollerin yönetimini sağlayarak verilere erişim kontrolü ve güvenlik sağlar.

Kibana, özellikle büyük veri kümelerini anlamak ve işletmelerin veri tabanlı kararlar almasını desteklemek isteyen kişiler ve organizasyonlar için değerli bir araçtır. Verileri görselleştirmek ve analiz etmek, Kibana'nın sağladığı araçlarla daha kolay ve etkili hale gelir.

ElasticSearch ve Kibana Kurulumu

ElasticSearch ve Kibana kurulumu için en yaygın kullanılan yöntem birer Docker Container'ı olarak ayağa kaldırmaktır.

Aşağıdaki komutlar sizin için elasticsearch ve kibana'yı birer container olarak oluşturacaktır.

docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -e "discovery.type=single-node" elasticsearch:8.8.1
docker run -d --name kibana --net somenetwork -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" kibana:8.8.1

Ya da alternatif olarak docker-compose.yml için aşağıdaki örneği kullanabilirsiniz.

version: '3'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.8.1
container_name: elasticsearch
environment:
- discovery.type=single-node
ports:
- "9200:9200"
networks:
- somenetwork

kibana:
image: docker.elastic.co/kibana/kibana:8.8.1
container_name: kibana
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- somenetwork

networks:
somenetwork:
driver: bridge

docker-composer up -d

Kurulumlar başarılı bir şekilde tamamlandıysa ElasticSearch için http://localhost:9200, Kibana içinse http://localhost:5601 adreslerini kullanabilirsiniz.

Elasticsearch ve Kibana hakkında teorik olarak sahip olmanız gereken bilgiye sahip olduğunuzu umuyorum. Bu, bir sonraki üreteceğim içeriğin teorik bir ön sunumuydu. İlerleyen günlerde kolları sıvayıp, elimi kirleteceğim merak etmeyin. ;)