所以我只是将其中一个索引设置为只读,现在想删除它。
将其设置为只读:
PUT my_index/_settings
{ "index": { "index.blocks.read_only" : true } }
当我尝试删除它时,我得到了这样的回复:
ClusterBlockException[blocked by: [FORBIDDEN/5/index read-only (api)];]
然后我尝试将索引设置为只读 false:
PUT my_index/_settings
{ "index": { "index.blocks.read_only" : false } }
但这给出了与上面相同的错误消息。那么如何将readonly设置回false呢?
答案真的很旧,所以我也会添加一个弹性6+的答案:
PUT /[_all|<index-name>]/_settings
{
"index.blocks.read_only_allow_delete": null
}
https://www.elastic.co/guide/en/elasticsearch/reference/6.x/disk-allocator.html
仅供参考(上下文):由于磁盘不足,我遇到了只读索引,并从 Logstash 收到了错误消息:
...retrying failed action with response code: 403 ({"type"=>"cluster_block_exception", "reason"=>"blocked"
弹性搜索:
ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete
(API)];]
将
es index
设置为只读的正确方法是
PUT your_index/_settings
{
"index": {
"blocks.read_only": true
}
}
将
true
更改为 false
以撤消它。
您可以使用
设置非动态设置 {
"index": {
"blocks.read_only": false
}
}
我认为这不是你的意图。另外,我认为您应该在第一次操作期间看到错误,因为非动态设置只能在
close indices
上更新。
奔跑
POST your_index/_close
然后尝试更改它。
curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'{ "index.blocks.read_only" : false } }'
如果您安装了 Kibana,您可以访问您的 kibana 网址:
Management (Left pane) -> Elasticseach Index Management -> Select your Index -> Edit Settings
然后更新:
"index.blocks.read_only_allow_delete": "false"
此外,要在 kibana 上全局设置它,您可以转到开发工具(左窗格)并提出以下请求:
PUT _settings
{
"index": {
"blocks": {
"read_only_allow_delete": "false"
}
}
}
在 ElasticSearch (ES) 2.x 版本中,您必须执行以下操作
PUT your_index/_settings
{
"index": {
"blocks": {
"write": "false",
"read_only": "false"
}
}
}
虽然在内部将索引设置为
read_only
为 true,ES 也会将 write
更改为 true,并且仅将 read_only
恢复为 false 仍然不允许您更新索引,因此您必须显式更新 write
设置。
对于 6.x 获取设置:
curl elasticsearch-sc:9200/_settings?pretty
使索引/集群可写:
curl -XPUT -H "Content-Type: application/json" \
http://elasticsearch-sc:9200/_all/_settings \
-d '{"index.blocks.read_only_allow_delete": null}'