当我尝试在elasticsearch中存储任何内容时,错误说:
TransportError(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')
我已经在索引中插入了大约2亿个文档。但我不知道为什么会发生这种错误。 我试过了:
curl -u elastic:changeme -XPUT 'localhost:9200/_cluster/settings' -H 'Content-Type: application/json' -d '{"persistent":{"cluster.blocks.read_only":false}}'
如上所述: Playground
结果是:
{"acknowledged":true,"persistent":{"cluster":{"blocks":{"read_only":"false"}}},"transient":{}}
但没有改变。我该怎么办?
答案 0 :(得分:27)
试试GET yourindex/_settings
,这会显示您的指数设置。如果read_only_allow_delete
为true
,请尝试:
PUT /<yourindex>/_settings
{
"index.blocks.read_only_allow_delete": null
}
我解决了我的问题。
请参阅es config guide了解更多详情。
答案 1 :(得分:3)
上个月我遇到了同样的问题,您可以在Kibana开发工具上尝试使用此代码
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
我希望对您有帮助
答案 2 :(得分:2)
磁盘空间已满时,我也遇到了同样的问题,
请参阅我执行的步骤
1-增加磁盘空间
2-更新索引只读模式,请参见以下curl请求
curl -XPUT -H“内容类型:application / json” http://localhost:9200/_all/_settings -d '{“ index.blocks.read_only_allow_delete”:空}'
答案 3 :(得分:0)
稍后,当我自己遇到问题时,对此进行标记-我完成了以下步骤。 1)删除了较旧的索引以立即释放空间-这使我的空闲率提高了约23%。 2)更新索引只读模式。
我仍然遇到同样的问题。我检查了开发控制台,以查看可能仍被锁定的内容,但没有被锁定。重新启动群集,并遇到相同的问题。
最后,在索引管理下,我选择了具有ILM生命周期问题的索引,然后选择重新应用ILM步骤。不得不这样做几次以清除它们,但确实如此。
答案 4 :(得分:0)
发生这种情况是因为 Elastic Search 的默认水印磁盘使用情况。通常是磁盘大小的 95%。
<块引用>这种情况发生在 Elasticsearch 认为磁盘空间不足,因此将自身置于只读模式时。
默认情况下,Elasticsearch 的决定基于可用磁盘空间的百分比,因此在大磁盘上,即使您有许多 GB 的可用空间,也可能发生这种情况。
洪水阶段水印默认为 95%,因此在 1TB 驱动器上您至少需要 50GB 可用空间,否则 Elasticsearch 会将自身置于只读模式。
有关洪水阶段水印的文档,请参阅 https://www.elastic.co/guide/en/elasticsearch/reference/6.2/disk-allocator.html。
引自部分this answer
一种解决方案是完全禁用它(我发现它在我的本地和 CI 设置中很有用)。为此,请运行 2 个命令:
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "transient": { "cluster.routing.allocation.disk.threshold_enabled": false } }'
curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'
答案 5 :(得分:-1)
问题可能是磁盘空间问题,我有这个问题,尽管我清理了很多空间我的磁盘,所以,最后我删除了数据文件夹,它工作: Java.security.MessageDigest.getInstance(‘MD5’)
.digest(inputStringWithUtf8.getBytes(“EUC-JP”))
.encodeHex()
.toString();
答案 6 :(得分:-1)
这解决了问题;
PUT _settings {“ index”:{“ blocks”:{“ read_only_allow_delete”:“ false”}
}