Elasticsearch Kurulumu ve Kullanımı

Elasticsearch, verilerin gerçek zamanlı olarak dağıtılmış arama ve analizine olanak sağlayan popüler bir platformdur. Bu rehberde, Elasticsearch’ü Ubuntu 22.04 üzerinde nasıl kuracağınızı, yapılandıracağınızı, güvenliğini sağlayacağınızı ve kullanmaya başlayacağınızı öğreneceksiniz. Ayrıca test aşamalarını ve GET/POST işlemlerini detaylandıracağız.

Ön Gereksinimler

Bu kılavuzu takip etmeden önce aşağıdaki şartlara sahip olmanız gerekmektedir:

  • 2 GB RAM ve 2 CPU ile yapılandırılmış bir Ubuntu 22.04 sunucusu
  • Sudo yetkilerine sahip bir kullanıcı

1. Elasticsearch Kurulumu ve Yapılandırılması

Elasticsearch, Ubuntu’nun varsayılan paket depolarında bulunmaz. APT ile Elastic’in paket kaynağını ekleyerek Elasticsearch kurabiliriz.

GPG Anahtarını ve Depoyu Ekleme

Elasticsearch paketlerinin doğrulanmasını sağlamak için önce Elasticsearch’ün GPG anahtarını ve Elastic paket listesini ekleyelim:

curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

Daha sonra, Elastic depo kaynağını /etc/apt/sources.list.d dizinine ekleyelim:

echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

Elasticsearch’i Kurma

Depo güncellenip Elasticsearch paketini yükleyelim:

sudo apt update
sudo apt install elasticsearch

Yükleme tamamlandıktan sonra Elasticsearch servisini başlatın ve sunucu açıldığında otomatik başlatılması için etkinleştirin:

sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

2. Elasticsearch Yapılandırması

Elasticsearch konfigürasyonu için elasticsearch.yml dosyasını düzenlememiz gerekmektedir. Bu dosya, /etc/elasticsearch/elasticsearch.yml yolunda yer alır. Nano ya da başka bir metin düzenleyici ile açalım:

sudo nano /etc/elasticsearch/elasticsearch.yml

Ağ Bağlantılarını Yapılandırma

Elasticsearch varsayılan olarak tüm ağ arayüzlerinden gelen trafiği kabul eder. Güvenliği artırmak için yalnızca localhost’tan gelen istekleri kabul etmesini sağlayalım. Bunun için network.host satırını düzenleyelim:

network.host: localhost

Değişiklikleri kaydedip çıkın (CTRL+X, ardından Y ve Enter tuşlarına basarak).

3. Elasticsearch Güvenliğini Sağlama

Varsayılan olarak Elasticsearch yalnızca localhost üzerinden erişime açık olduğu için dışarıdan erişim mümkün değildir. Ancak, uzaktan erişim gerekiyorsa güvenlik duvarı ayarlarını yapılandırmamız gerekecek. UFW (Uncomplicated Firewall) kullanarak yalnızca güvenilir IP’lere erişim izni verebiliriz.

Aşağıdaki komut ile 9200 portuna sadece belirttiğiniz IP adresinin erişimine izin verin (örnekteki IP adresini kendi sunucunuzun adresi ile değiştirin):

sudo ufw allow from 198.51.100.0 to any port 9200
sudo ufw enable

Durumunu kontrol edin:

sudo ufw status

Çıktı şu şekilde olmalıdır:

To                         Action      From
--                         ------      ----
9200                       ALLOW       198.51.100.0

4. Elasticsearch’i Test Etme

Kurulum ve yapılandırma işlemlerinden sonra, Elasticsearch’ün düzgün çalışıp çalışmadığını test edelim. İlk olarak, Elasticsearch’ün çalışıp çalışmadığını görmek için basit bir GET isteği yapalım:

curl -X GET 'http://localhost:9200'

Beklenen çıktı şu şekilde olacaktır:

{
  "name" : "elastic-22",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ",
  "version" : {
    "number" : "7.17.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a",
    "build_date" : "2022-02-23T22:20:54.153567231Z",
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

5. Elasticsearch ile Veri Kullanımı

Elasticsearch ile veri ekleme, güncelleme ve silme işlemleri RESTful API aracılığıyla gerçekleştirilir. Bu işlemler için curl komutunu kullanacağız.

Veri Ekleme

Aşağıdaki komutla Elasticsearch’e ilk kaydımızı ekleyelim:

curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Başarılı bir sonuç aldığınızda şu çıktıyı göreceksiniz:

{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}

Veri Sorgulama

Eklediğimiz veriyi sorgulamak için şu GET isteğini yapın:

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1'

Çıktı şu şekilde olmalıdır:

{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 1,
  "found" : true,
  "_source" : {
    "message": "Hello World!"
  }
}

Veri Güncelleme

Veriyi güncellemek için PUT isteği kullanılır. Aşağıdaki komutla mesajımızı değiştirelim:

curl -X PUT -H "Content-Type: application/json"  'localhost:9200/tutorial/helloworld/1?pretty' -d '
{
  "message": "Hello, People!"
}'

Başarılı bir güncellemeden sonra şu yanıtı almalısınız:

{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

Güncellenmiş Veriyi Sorgulama

Veriyi tekrar sorgulayıp güncellenmiş halini görebilirsiniz:

curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

Çıktı şu şekilde olmalıdır:

{
  "_index" : "tutorial",
  "_type" : "helloworld",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 1,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "message": "Hello, People!"
  }
}

Sonuç

Bu rehberde Elasticsearch’ü nasıl kuracağınızı, yapılandıracağınızı ve test edeceğinizi öğrendiniz. Ayrıca Elasticsearch ile veri ekleme ve sorgulama işlemlerini de öğrendik. Elasticsearch’ün daha fazla özelliği ve API’leri için resmi dokümantasyonu inceleyebilirsiniz.

Önceki Konu

DevOps İçin Programlama Dil Seçimi Rehberi

Sonraki Konu

Docker Images, Containers ve Volumes Nasıl Silinir?

Bültenimize Abone Olun 📬

En son gönderilerimizin doğrudan e-posta kutunuza gelmesi için e-posta bültenimize abone olun.
Düşüncelerinizi özgür bırakın ✨