Ответ 1
Это происходит, когда Elasticsearch считает, что диск работает на низком уровне, поэтому он переходит в режим только для чтения.
По умолчанию решения Elasticsearch базируются на проценте дискового пространства, свободные, так и на больших дисках это может произойти, даже если у вас есть много гигабайта свободного пространства.
Водяной знак наводнения составляет 95% по умолчанию, поэтому на приводе 1 ТБ вам потребуется не менее 50 ГБ свободного места, или Elasticsearch перейдет в режим только для чтения.
Для документов о водяном знаке наводнения см. Https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html.
Правильное решение зависит от контекста - например, производственной среды и среды разработки.
Решение 1: освободите место на диске
Освобождение достаточного дискового пространства, чтобы освободить более 5% диска, решит эту проблему. Elasticsearch не будет автоматически выходить из режима чтения только после того, как достаточно свободного диска, хотя вам нужно будет сделать что-то подобное, чтобы разблокировать индексы:
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
Решение 2: изменение настройки водяного знака наводнения
Измените параметр "cluster.routing.allocation.disk.watermark.flood_stage"
на что-то еще. Его можно либо установить на более низкий процент, либо на абсолютное значение. Вот пример того, как изменить параметр из документов:
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"
}
}
Опять же, после этого вам придется использовать команду curl выше, чтобы разблокировать индексы, но после этого они не должны переходить в режим только для чтения.