Це трапляється, коли 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 вище, щоб розблокувати індекси, але після цього вони не повинні знову переходити в режим лише для читання.