Ошибка Elasticsearch: cluster_block_exception [FORBIDDEN / 12 / index только для чтения / разрешить удаление (api)], превышен водяной знак диска стадии заполнения - PullRequest
0 голосов
/ 30 мая 2018

При попытке отправить документы в Elasticsearch как обычно, я получаю эту ошибку:

cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];

Я также вижу это сообщение в журналах Elasticsearch:

flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only

1 Ответ

0 голосов
/ 30 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...