Это происходит, когда 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, чтобы разблокировать индексы, но после этого они не должны снова переходить в режим только для чтения.