Это происходит, когда 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"
на другое.Он может быть установлен на более низкий процент или на абсолютное значение.Вот пример того, как изменить настройку с docs :
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, чтобы разблокировать индексы, но послечто они не должны снова переходить в режим только для чтения.