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}'

さいごに

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

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