Bu, Elasticsearch'ün diskin boş alanın azaldığını düşünmesi ve kendini salt okunur moduna geçirmesi durumunda meydana gelir.
Varsayılan olarak Elasticsearch'ün kararı, boş disk alanı yüzdesine dayanır , bu nedenle büyük disklerde bu, çok sayıda gigabayt boş alanınız olsa bile gerçekleşebilir.
Sel aşaması filigranı varsayılan olarak% 95'tir, bu nedenle 1 TB'lık bir sürücüde en az 50 GB boş alana ihtiyacınız vardır, aksi takdirde Elasticsearch kendisini salt okunur moduna geçirir.
Sel aşaması filigranı hakkında belgeler için bkz. Https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html .
Doğru çözüm bağlama bağlıdır - örneğin bir üretim ortamı ile bir geliştirme ortamı.
1.Çözüm: Disk alanını boşaltın
Diskin% 5'inden fazlasının boş olması için yeterli disk alanı boşaltmak bu sorunu çözecektir. Elasticsearch, yeterli disk boş olduğunda otomatik olarak salt okunur moddan çıkmaz, ancak endekslerin kilidini açmak için böyle bir şey yapmanız gerekir:
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
Çözüm 2: Sel aşaması filigran ayarını değiştirin
Change "cluster.routing.allocation.disk.watermark.flood_stage"
başka bir şeye ayarı. Daha düşük bir yüzdeye veya mutlak bir değere ayarlanabilir. Dokümanlardan ayarın nasıl değiştirileceğine dair bir örnek :
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
Yine, bunu yaptıktan sonra, indislerin kilidini açmak için yukarıdaki curl komutunu kullanmanız gerekecek, ancak bundan sonra tekrar salt okunur moda geçmemelisiniz.