当Elasticsearch认为磁盘空间不足,因此将其置于只读模式时,就会发生这种情况。
默认情况下,Elasticsearch的决定基于可用磁盘空间的 百分比 ,因此在大磁盘上,即使您有许多GB的可用空间,也可能发生这种情况。
泛洪阶段的水印默认为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"设置更改为其他设置。可以将其设置为较低的百分比或绝对值。这是一个如何从docs更改设置的示例:
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错误:cluster_block_exception [FORBIDDEN / 12 /index只读/允许删除(api)],超出了洪水阶段磁盘水印 Elasticsearch错误:cluster_block_exception [FORBIDDEN / 12 /index只读/允许删除(api)],超出了洪水阶段磁盘水印](http://www.mshxw.com/aiimages/31/403617.png)
