Elasticsearch ten bahsetmeden önce ‘full text search’ kavramıyla giriş yapmak daha açıklayıcı olacaktır. Web sitelerinde geçirilen vakit arttıkça bununla doğru orantılı olarak data miktarıda artmaktadır. Çoğu web sitesinde büyük miktarlarda data üretiliyor bunlar ‘big data’ olarak adlandırılıyor. Bu veriler genelde dağınık ve tek başına anlamsız olduğu için bu verilerin anlamlı hale gelmesi hızlı ve doğru bir şekilde erişilir olması ve analiz edilmesi büyük önem taşımaktadır. Elasticsearch bunun için bize bir çözüm sunmaktadır.

Elasticsearch Nedir ?

RDBMS’lerde Full-Text search yapıldığında performans ve hız açısından iyi değerlere sahip olmak bize yüksek costlar çıkarabiliyor. Bu açıdan ‘Distributed NoSQL Database’ olarak değerlendirdiğimizde elasticsearch bize performans ve hız artışı sağlayacaktır. Kısace bahsetmek gerekirse Lucene altyapısı üzerinde, Java programlama dili kullanılarak geliştirilmiş full text search engine ve analiz aracıdır.

Avantajları

  • Hızlı ve kolay kurulum imkanına sahiptir.
  • Basit bir cluster yapısı vardır.
  • JSON olarak indekslediğinden, birçok programlama dilini destekler.
  • Open Source’dur.
  • Datalar kaydedildikten saniyeler sonra elastic üzerinde yapılan aramalarda bulunabilirler.
  • Backup kolay bir şekilde alınabilir.
  • Alternatiflerine göre çok az resource kullanır.
  • İndeksleme yaptığı için, arama sonuçlarını hızlı verir.
  • RestfullAPI destekler.
  • Data tipine uygun olarak mapping yapabilir.
  • MongoDB, NoSQL, Cassandra ve HBase gibi databaselerden data aktarımına izin verir.
  • Auto complete özelliği vardır.
  • Distirbuted ve high scalable yapıda çalışabilir.

Çalışma mantığı herhangi bir data kaydedilirken, data içerisinde daha önceden belirlenen fieldlar indekslenir. Bu işlemi data kaydının ilk anında gerçekleştirdiği ve dataları indeks listesine göre sınıflandırdığı için, arama sonuçlarına hızlıca ulaşabilir.

Terminoloji

  • Indice: Klasik arama motorlarında veri tabanları üzerinden arama gerçekleştirilirken, ElasticSearch aramaları “Indice” olarak adlandırılan indeks dosyaları üzerinden gerçekleştirilir. ElasticSearch Clusterlarında birden fazla veri tabanı (Indice) bulunabilir.
  • Type: İlişkisel veri tabanlarındaki tablolardır ve verileri mantıksal bölümlere ayırır. ElasticSearch, aynı indeks içerisinde birden fazla Type barındırabilir.
  • Document: ElasticSearch içerisindeki Type yapılarında yer alan satırları temsil eder ve Type’ler bu yapılardan oluşur.
  • Mapping: İndekslenen verilerin hangi veri tipinde olduğunun tanımlandığı işlemdir.
  • Field: Diğer veri tabanı türlerindeki Column (Sütun) ElasticSearch’te Field (Alan) olarak adlandırılır. Her bir Document birden fazla Field (Alan) barındırabilir.
  • Cluster: Bir veya daha fazla düğümün toplamıdır. Cluster sayesinde tüm verileri içeren indeks oluşturma ve arama kabiliyetleri oluşur.

Elasticsearch Nasıl Kurulur ?

Bu yazıda ElasticSearch Linux bir makineye nasıl kurulur ondan bahsedilecektir. Linux olarak Centos 7 tercih edilmiştir. Kurulumdan önce makine üzerinde herhangi bir engelleme ile karşılaşmamak için firewall ve selinux disable edilir.

Elasticsearch java proglama dili ile yazıldığı için ilk olarak java son versiyonu kurulur.

sudo yum install java-1.8.0-openjdk.x86_64

Elasticsearch 7 versiyonları kurulumu için gerekli repository ekleriz.

cat > /etc/yum.repos.d/elasticsearch.repo <<EOF
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
EOF

Veya belirli bir versiyon kurmak istiyorsak o verisyonu ‘wget’ tool ile ilgili versiyon download edilir. Tabi önce ‘wget’ kurulması gerekecektir. Bu yazıda 7.12.1 versiyonu kurulacaktır.

sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.1-linux-x86_64.tar.gz

İlgili dosyalar download edildikten sonra path üzerine çıkarılır.

sudo tar -xzf elasticsearch-7.12.1-linux-x86_64.tar.gz

Servis start edilmeden önce ilgili konfigürasyonlar yapılması gerekir yoksa servis çalışmayacaktır. Önce java konfigürasyon dosyasında makine üzerindeki resource ve gelecek data boyutuna göre elasticsearch maixmum memory kullanımı belirlenir. Editlemek için ‘nano’ yada ‘vi’ benzeri editörleri kullanabilirsiniz.

sudo nano /etc/elasticsearch/jvm.options

Dosya içine eklemek yeterleri olacaktır. Bu sayede aşağıdaki konfigürasyonla maximum 4 gb memory kullanacaktır.

-Xms4g
-Xmx4g

Sonrasında elasticserach konfigürasyonu yapılacaktır. Cluster olarak yapılandırılacaktır. Bu yazıda sadece 2 node lu bir cluster yapılandırılacaktır. Elasticsearch 7 ve üstü versiyonlar için konfigürasyon aşağıdaki gibi olacaktır. Alt sürümlerde konfigürasyon farklıdır.

sudo nano /etc/elasticsearch/elasticsearch.yml

1.node ;

cluster.name: es-test

node.name: es-test-node-1

path.data: /home/elasticsearch

path.logs: /var/log/elasticsearch

node.master: true
node.data: true
node.ingest: true

transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0
node.max_local_storage_nodes: 1

discovery.seed_hosts: [“es-test-node-1″,”es-test-node-2”]

cluster.initial_master_nodes: [“es-test-node-1″,”es-test-node-2”]

gateway.recover_after_nodes: 1

2.node ;

cluster.name: es-test

node.name: es-test-node-2

path.data: /home/elasticsearch

path.logs: /var/log/elasticsearch

node.master: true
node.data: true
node.ingest: true

transport.tcp.port: 9300
http.port: 9200
network.host: 0.0.0.0
node.max_local_storage_nodes: 1

discovery.seed_hosts: [“es-test-node-1″,”es-test-node-2”]

cluster.initial_master_nodes: [“es-test-node-1″,”es-test-node-2”]

gateway.recover_after_nodes: 1

Elasticserach indice leri için ilgili konfigürasyon dosyasından path belirliyoruz. Öncesinde bu path create edip hangi user ile çalıştıracaksak o user ve group yetki veriyoruz. Default ta config dosyasında bunlar ‘elasticsearch’ tür.

sudo mkdir -p /home/elasticsearch
sudo chown -R elasticsearch:elasticsearch /home/elasticsearch
sudo chmod -R 700 /home/elasticsearch

sudo nano /etc/sysconfig/elasticsearch

ES_PATH_CONF=/etc/elasticsearch

MAX_LOCKED_MEMORY=unlimited

Artık servis start edip elasticserach hazır halde kullanmaya başlaşabiliriz.

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo /bin/systemctl start elasticsearch.service

Elasticsearch erişimi olan bir makinede browser ‘x.x.x.x:9200’ belirlediğiniz port ile istek yaptığnız zaman cluster başarılı bir şekilde çalıştığını görebilirsiniz.

Elastic Cluster Konfigürasyonu

Kibana Nedir ?

Kibana, Elasticsearch’e attığımız dataları Monitorize ve Visualize edebilmemiz sağlayan bir yapı. Bu ikisi için birbirini çok iyi tamamladıkları için muhteşem ikili diyebiliriz. Bu yazıda sadece kibana elastic ile beraber up edilmesini göreceksiniz.

Kibana Nasıl Kurulur ?

Öncelikli olarak kibana repository ekleriz.

cat > /etc/yum.repos.d/kibana.repo <<EOF
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Sonrasında rpm ile kurulumu gerçekleştiririz.

sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-5.4.1-x86_64.rpm
sudo rpm -ivh kibana-5.4.1-x86_64.rpm.rpm

Kibana konfigürasyon dosyasını düzenleriz. Burada kullanacağımız port ve elasticsearch hostumuzu göstermemiz gerekiyor.

sudo nano /etc/kibana/kibana.yml

server.port: 5601

server.host: “x.x.x.x”

elasticsearch.hosts: [“http://x.x.x.x:9200”]

Artık servisi start edebiliriz.

sudo systemctl enable kibana

sudo systemctl start kibana

Kibana erişimi olan bir makinede browser ‘x.x.x.x:5601’ belirlediğiniz port ile istek yaptığnız zaman elasticsearch ile başarılı bir şekilde haberleştiğini ve servisin çalıştığını gözlemleyebilirsiniz.

Kibana Arayüzü

 


0 yorum

Bir yanıt yazın

Avatar yer tutucu

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir