ElasticSearchにデータをインサートしようとしたところ、タイトルのエラーが出て困りました。本記事では対処方法をメモしておきます。
結論
ディスク容量を増やせば解決します。
私の場合、Dockerコンテナを使ってElasticSearchを起動しているため、以下のpruneコマンドで不要なDockerオブジェクト(イメージ、コンテナ、ボリューム、ネットワーク等)を削除すると解決しました。
docker system pruneDockerを使っていない場合も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


コメント