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.

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.

0 yorum