TransportError(403,u' cluster_block_exception',u'被阻止:[FORBIDDEN / 12 / index只读/允许删除(api)];')

时间:2017-12-30 09:33:08

标签: elasticsearch elasticsearch-5

当我尝试在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":{}}

但没有改变。我该怎么办?

7 个答案:

答案 0 :(得分:27)

试试GET yourindex/_settings,这会显示您的指数设置。如果read_only_allow_deletetrue,请尝试:

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”}
}