これは、Elasticsearchがディスクの空き容量が少なくなっていると判断したために発生し、読み取り専用モードになります。
デフォルトでは、Elasticsearchの決定は空きディスクスペースのパーセンテージに基づいているため、大きなディスクでは、ギガバイトの空きスペースが多くてもこれが発生する可能性があります。
フラッディングステージのウォーターマークはデフォルトで95%であるため、1TBのドライブでは少なくとも50GBの空き容量が必要です。そうしないと、Elasticsearchが読み取り専用モードになります。
洪水段階の透かしに関するドキュメントについては、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コマンドを使用してインデックスのロックを解除する必要がありますが、その後、インデックスを再び読み取り専用モードにしないでください。