2018年08月27日

Elasticsearchのread-onlyエラーへの対処法

pootleで使っているElasticsearchが急にエラーを吐くようになった。

TransportError(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')

どうもデータベースが読み込みモードになっているよう。調べるとディスクの空きがほぼなくなると自動でモードを切り替えるらしい。

cluster.routing.allocation.disk.watermark.flood_stage

Controls the flood stage watermark. It defaults to 95%, meaning that Elasticsearch enforces a read-only index block …

Disk-based Shard Allocation | Elasticsearch Reference [6.4] | Elastic

バックアップの整理中でディスクを使っていたのでいつの間にか切り替わっていたようで。保存が終わったファイルを削除したが、もとには戻らない。 マニュアルを読み進めると手動で切り替えが必要とのこと。リセットするためのAPIが書いてあった。 下記、twitter は対象とするインデックスの名前に置き換える。例えばpootleでは translations になる。

curl -X PUT "localhost:9200/twitter/_settings" -H 'Content-Type: application/json' -d'
{
  "index.blocks.read_only_allow_delete": null
  }
  '

実行前にhttp://localhost:9200/translations/_settings にアクセスすると確かにread-onlyのフラグが立っている。上記のコマンドですぐ治った。

  • https://stackoverflow.com/questions/38735514/elasticsearch-entered-read-only-mode-node-cannot-be-altered
  • https://stackoverflow.com/questions/48032661/transporterror403-ucluster-block-exception-ublocked-by-forbidden-12-inde


posted by かぷらす at 21:08| Comment(0) | 作業記録・備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください