elasticsearch 报错

2021-09-03 14:37:35#error check_history :AuthorizationException(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')
2021-09-03 14:37:35#Error2:AuthorizationException(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')

提示说操作的index 变为只读,什么情况,之前明明是可以写入的,并且也没有修es配置怎么就变成只读?

那么查看设置(以本机部署9200为例):

curl -GET 'localhost:9200/my_index/_settings?pretty'

得到如下

{
"sensorip" : {
"settings" : {
"index" : {
"number_of_shards" : "5",
"blocks" : {
"read_only_allow_delete" : "true"
},
"provided_name" : "my_index",
"creation_date" : "1629352759087",
"number_of_replicas" : "1",
"uuid" : "YXLhaUM6SSKRQo8mq137kw",
"version" : {
"created" : "6020399"
}
}
}
}
}

 这里可以看到这个index相关的block变成只读

        "blocks" : {
          "read_only_allow_delete" : "true"
        },

当Elasticsearch所在磁盘占用大于等于95%时,Elasticsearch会把所有相关索引自动置为只读。(​​Elasticsearch官方文档有介绍​​),但是把这块磁盘的空间释放出来,es中这个index相关的还是只读。

解决方案:
1.清理磁盘,使占用低于95%。
2.调整自动锁阀值,​​​官方文档中有详尽方法​​。

curl -XPUT '127.0.0.1:9200/sensorip/_settings' -d '{"index.blocks.read_only_allow_delete": null}'  -H "Content-Type: application/json;charset=UTF-8"

操作返回

{"acknowledged":true}