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.