İlk Sorgunun Yavaş Gelmesi
Elasticsearch'de varsayılan olarak, bir shard 30 saniye boyunca aranmazsa refresh durur. Bir sonraki arama refresh'i tetikler ve aramadan önce refresh çalışır.
Belirli bir süre sorgulamalara ara verildiğinde bu durum, Elasticsearch sorgularının ilk çalışmasının çok uzun sürmesine sebep olur.
Bunun önüne geçilmesi için aşağıdaki iki ayar değiştirilebilir:
1) Bir shard'ın, aramanın idle olduğu kabul edilene kadar ne kadar süreyle arama alamayacağı veya istek alamayacağını belirten değeri değiştirmek.
index.search.idle.after=30sn
- Bu değer arttırıldığında, refresh işlemi için iki sorgu arasında geçmesi gereken süre artar.
- Bu sorunu sadece biraz daha uzun vadede olması için öteler.
- Eğer sık sorgulanan bir sistem ise düşünülebilir.
2) Index'te yapılan son değişiklikleri arama için görünür hale getiren refresh işleminin ne sıklıkta gerçekleştirileceğini belirten değeri değiştirmek.
index.refresh_interval=1sn
- Bu değer arttırıldığında refresh'in belirli sürelerde otomatik yapılması sağlanır.
- Bu sorgu sonuçlarında belirli süre boyunca güncel olmayan verilerin gelebilmesine ve sistem kaynaklarının daha fazla tüketilmesine yol açar.
- Eğer sık sorgulanma yapılmıyorsa ama sorgulama yapan uygulamanın performanslı olması gerekiyorsa ayarlanması önem arz eder.
- Bu yenileme süresinin fine-tune edilmesi ihtiyacınıza göre değişir.
Index Ayarını Değiştirme
"elasticsearch.yml" dosyasında index bazlı ayarlar yapılamaz.
Index bazlı ayarlar ya index template kullanarak ya da index ayar api'si kullanılarak değiştirilebilir.
API Kullanımı
Aşağıda tüm indexlerde bu ayarın API kullanımı ile ayarlanması gösterilmiştir:
curl -X PUT "<ELASTICSEARCH_IP>:9200/_all/_settings?preserve_existing=true&ignore_unavailable=true" --header 'Content-Type:application/json' -d'{ "index" : {"refresh_interval" : "5s"}}'
Aşağıda sadece belirtilen indexde bu ayarın API kullanımı ile ayarlanması gösterilmiştir:
curl -X PUT "<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-<INDEX_KEY>/_settings?preserve_existing=true&ignore_unavailable=true" --header 'Content-Type:application/json' -d'{ "index" : {"refresh_interval" : "5s"}}'
Index Template Kullanımı
Aşağıda sadece ilgili index için Index Template kullanılarak bu ayarın ayarlanması gösterilmiştir:
{
"data_stream": {
},
"index_patterns": [
"<INDEX_PATTERN_NAME>"
],
"template": {
"mappings": { ... },
"settings": {
"index": {
"lifecycle": {
"name": "<ILM_POLICY_NAME>"
},
"number_of_replicas": "0",
"number_of_shards": "1",
"refresh_interval": "5sn"
}
}
}
}