如何撤消将Elasticsearch Index设置为只读?

Ben*_*lde 24 elasticsearch

所以我只是将我的一个索引设置为readonly,现在想删除它.

将其设置为只读:

PUT my_index/_settings
{ "index": { "index.blocks.read_only" : true } }
Run Code Online (Sandbox Code Playgroud)

当我试图删除它时,我收到了这样的回复:

ClusterBlockException[blocked by: [FORBIDDEN/5/index read-only (api)];]
Run Code Online (Sandbox Code Playgroud)

然后我尝试将索引设置为readonly false:

PUT my_index/_settings
{ "index": { "index.blocks.read_only" : false } }
Run Code Online (Sandbox Code Playgroud)

但是这给出了与上面相同的错误消息.那么如何将readonly设置为false?

Kri*_*fer 31

答案真的很旧,所以我也会添加一个弹性答案:

PUT /[_all|<index-name>]/_settings
{
  "index.blocks.read_only_allow_delete": null
}
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

elasticsearch:
ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete(api)];]

  • 正确的6.4,localhost上的curl命令类似于:`curl -X PUT"localhost:9200/_all/_settings"-H'Content-Type:application/json'-d'{"index.blocks.read_only_allow_delete":false }'' (6认同)
  • 要将其应用于所有indeces,只需省略"index-name /"前缀并将PUT直接发送到"_settings" (4认同)

Chi*_*h25 25

制作es index只读的正确方法是

PUT your_index/_settings
{
  "index": {
    "blocks.read_only": true
  }
}
Run Code Online (Sandbox Code Playgroud)

改变truefalse将其复原.

您可以使用设置非动态设置

   {
      "index": {
        "index.blocks.read_only": false
      }
    }
Run Code Online (Sandbox Code Playgroud)

我认为这不是你的意图.另外我认为您应该在第一次操作时看到错误,因为非动态设置只能更新close indices.

POST your_index/_close
Run Code Online (Sandbox Code Playgroud)

然后尝试改变它.

  • 作为本地上的一行: `curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'{ "index.blocks.read_only_allow_delete" : null } }'` (2认同)

Rya*_*der 7

curl -X PUT "localhost:9200/_all/_settings" -H 'Content-Type: application/json' -d'{ "index.blocks.read_only" : false } }'
Run Code Online (Sandbox Code Playgroud)


Har*_*eep 6

在 ElasticSearch (ES) 的 2.x 版中,您必须执行以下操作

PUT your_index/_settings

{
  "index": {
    "blocks": {
      "write": "false",
      "read_only": "false"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

虽然在read_only内部将索引设置为 true ,但 ES 也会将write其更改为 true 并且仅恢复read_only为 false 仍然不允许您更新索引,因此您必须write显式更新设置。


sur*_*190 5

如果您安装了 Kibana,您可以访问您的 kibana 网址:

Management (Left pane) -> Elasticseach Index Management -> Select your Index -> Edit Settings
Run Code Online (Sandbox Code Playgroud)

然后更新:

"index.blocks.read_only_allow_delete": "false"
Run Code Online (Sandbox Code Playgroud)

此外,要在 kibana 上全局设置它,您可以转到开发工具(左窗格)并发出以下请求:

PUT _settings
{
  "index": {
    "blocks": {
      "read_only_allow_delete": "false"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)