ElasticSearchで「TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block」のエラーに遭遇した

Docker

ElasticSearchにデータをインサートしようとしたところ、タイトルのエラーが出て困りました。本記事では対処方法をメモしておきます。

結論

ディスク容量を増やせば解決します。

私の場合、Dockerコンテナを使ってElasticSearchを起動しているため、以下のpruneコマンドで不要なDockerオブジェクト(イメージ、コンテナ、ボリューム、ネットワーク等)を削除すると解決しました。

docker system prune

Dockerを使っていない場合もPCのディスク容量を増やすと解決するようです。

詳細

ElasticSearchにデータをインサートしようとしたところ、以下のエラーに遭遇しました。

Elasticsearch::Transport::Transport::ServerError:
       [429] {"error":{"root_cause":[{"type":"cluster_block_exception","reason":"index [<index_name>] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"}],"type":"cluster_block_exception","reason":"index [<index_name>] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];"},"status":429}

ElasticSearchのドキュメントを確認したところ、ディスク容量が少なくなり、ディスク使用量が基準値(デフォルトで95%)以上になると、インデックスへの書き込みがブロックされるようです。

また、ディスク使用量が基準値を下回ると、自動的にブロックが解除されるようです。

よって、ディスク使用量を減らせばよいです。

私はElasticSearchをDockerコンテナとして起動していたため、上記のとおりpruneコマンドで不要なDockerオブジェクトを削除すると解決しました。

また、こちらの記事によると、Dockerコンテナを使わずにElasticSearchを使用している場合もディスク容量を増やすとデータの書き込みができるようになるようです。

以上、お役に立てれば幸いです。

参考にしたサイト

Fix watermark errors | Elasticsearch Guide [8.15] | Elastic
OpenSearchにデータをインサート時、TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete blockが発生する。 - 表参道25時
OpenSearchにデータを入れるときにエラーが発生し、解決までのメモ
Elasticsearch > index [foo_index] blocked by - Qiita
Macのローカル環境のElasticsearchにデータ追加時に、cluster_block_exceptionが表示された件現象Elasticsearchにデータを追加しようとした時に、書き込…

コメント

タイトルとURLをコピーしました