Elasticsearchで書き込みができなくなった時の対応方法

目次

概要

Elasticsearchを使っていて、ある時次のようなメッセージが表示されて Elasticsearchへのデータの書き込みができなくなっていました。

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

この問題を解決する方法を紹介します。

環境

  • Elasticsearch 6.2

原因

私の環境では、この問題が発生したのはストレージが枯渇したのが原因のようでした。

デフォルトでは、ストレージの使用率が95%以上になった時に異常を起こさないために自動で書き込み禁止になるようです。

そのため、Elasticsearchを動かしている環境へのストレージ割り当てを増やして問題の解決をしようとしました。

しかし、そのままでは書き込みができなくなったままなので、書き込み禁止の解除をする必要があります。

解決方法

書き込みの解除はAPIを介して行います。

次のコマンドは、Elasticsearchが動いているサーバにログインして、curlを使い書き込み禁止を解除するコマンドです。

もし、別のサーバからアクセスする場合はURLを変える必要があります。

curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

さいごに

解決にかなりの時間がかかりました。

誰かの参考になれば幸いです。