[解決済み】Elasticsearchエラー:cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)], flood stage disk watermark exceeded.
質問内容
Elasticsearchに通常通りドキュメントをポストしようとすると、以下のようなエラーが発生します。
cluster_block_exception [FORBIDDEN/12/index read-only / allow delete (api)];
また、Elasticsearchのログにはこのようなメッセージが表示されています。
flood stage disk watermark [95%] exceeded ... all indices on this node will marked read-only
解決方法は?
これは、Elasticsearchがディスクの空き容量が少なくなってきたと判断し、自分自身を読み取り専用モードにした場合に起こります。
デフォルトでは、Elasticsearchの判断は 割合 であるため、大きなディスクでは、何ギガバイトの空き容量があっても、このようなことが起こり得ます。
洪水時のウォーターマークはデフォルトで95%なので、1TBのドライブの場合、少なくとも50GBの空き容量が必要です。
フラッドステージウォーターマークに関するドキュメントを参照してください。 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html .
適切なソリューションは、例えば本番環境と開発環境など、状況によって異なります。
解決策1:ディスクスペースの確保
ディスクの5%以上が空くように、十分なディスクスペースを確保することでこの問題は解決します。ただし、ディスクの空き容量が十分あっても、Elasticsearchは自動的に読み取り専用モードを解除してくれないので、インデックスを解除するためにこのような操作を行う必要があります。
$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
解決策2:フラッドステージウォーターマークの設定を変更する
を変更します。
"cluster.routing.allocation.disk.watermark.flood_stage"
の設定を他のものに変更します。より低いパーセンテージに設定することも、絶対値に設定することも可能です。以下は、設定を次のように変更する例です。
ドキュメント
:
PUT _cluster/settings
{
"transient": {
"cluster.routing.allocation.disk.watermark.low": "100gb",
"cluster.routing.allocation.disk.watermark.high": "50gb",
"cluster.routing.allocation.disk.watermark.flood_stage": "10gb",
"cluster.info.update.interval": "1m"
}
}
繰り返しになりますが、これを行った後は、上記のcurlコマンドでインデックスのロックを解除する必要がありますが、その後は再び読み取り専用モードになることはありません。
関連
-
[解決済み] クラスタのインデックスの名前を変更する方法は?
-
[解決済み] Elasticsearchです。ローカルホストのポート9200への接続に失敗 - 接続拒否
-
[解決済み] ElasticsearchとCassandraの比較 vs ElasticsearchとCassandraの比較
-
[解決済み] ElasticsearchでRead timed outを修正する方法
-
[解決済み] Elasticsearchは、複数のドキュメントを含むトランザクションをサポートする方法
-
[解決済み] ElasticSearchとマルチフィルター
-
[解決済み] Elasticsearchクエリ - @timestampと別のフィールドで並べ替え?
-
[解決済み] SQLのサブクエリに相当するElasticSearchの機能は何ですか?
-
[解決済み] ElasticSearchのキーワードフィールドの「Fielddata is disabled on text fields by default」を修正する方法
-
[解決済み] kibanaからcsv/excelへのエクスポート
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ElasticsearchとCassandraの比較 vs ElasticsearchとCassandraの比較
-
[解決済み] ElasticsearchでRead timed outを修正する方法
-
[解決済み] エラスティックサーチのインストールされているバージョンをkibanaから知るには?
-
[解決済み] Elasticsearchは、複数のドキュメントを含むトランザクションをサポートする方法
-
[解決済み] Elasticsearchクエリ - @timestampと別のフィールドで並べ替え?
-
[解決済み] ElasticSearchの日付範囲
-
[解決済み] elasticsearchで個数ではなく、明確な値を検索する。
-
[解決済み] kibanaからcsv/excelへのエクスポート
-
[解決済み】ElasticsearchのMUSTとSHOULDの違い boolクエリ
-
[解決済み】elasticsearchのboolクエリはORで結合する必要があります。