Главная / Справочник ошибок / Elasticsearch
Elasticsearch закрыл индекс на запись: диск заполнен
cluster_block_exception: index [name] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block]
index has read-only-allow-delete block, flood-stage watermark: Elasticsearch перевёл индексы в режим только чтения из-за заполненного диска. Новые документы не попадают в поиск.
Что это значит
Диск узла заполнился до порога flood_stage (по умолчанию 95 %). Elasticsearch защищает себя: переводит индексы на этом узле в режим, где разрешено только чтение и удаление. Запись получает эту ошибку. В Directum RX новые и изменённые документы перестают находиться поиском, а очередь индексации в брокере растёт.
В старых версиях текст другой: FORBIDDEN/12/index read-only / allow delete (api).
Как проверить
GET _cat/allocation?v
GET _all/_settings/index.blocks.*?flat_settings=true
Вторая команда покажет индексы, на которых стоит блокировка.
Что сделать
- Освободить место: удалить ненужные индексы или расширить диск.
- Начиная с версии 7.4 блокировка снимается сама, когда занятость опускается ниже порога
high(90 %). В более старых версиях и для надёжности снимите вручную:
PUT _all/_settings
{"index.blocks.read_only_allow_delete": null}
- Проверить, что очередь индексации в RabbitMQ начала разбираться.
- Поставить наблюдение за диском узла. Пороги
low85 % иhigh90 % срабатывают раньше и без остановки записи.
rxdoctor ловит блокировку пунктом ES-07, а накопление в очереди индексации пунктом MQ-08.