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を使用している場合もディスク容量を増やすとデータの書き込みができるようになるようです。

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

参考にしたサイト

https://www.elastic.co/guide/en/elasticsearch/reference/current/fix-watermark-errors.html

https://seki19.com/post/opensearch-watermark

https://qiita.com/sugasaki/items/22c8c6be52a38ba5afd5

コメント

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