elasticsearch出现只读索引如何操作 blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')

一个稳定运行的功能忽然收到报错,查明原因是在向Elasticsearch中插入文档时报错:

AuthorizationException: AuthorizationException(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')


网上也有其他人报TransportError:

TransportError(403, u'cluster_block_exception', u'blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];')


看错误信息大意是要操作的索引是只读的,不能进行插入或删除。
可是这个索引自从创建,从来也没有修改过配置,为什么忽然报错呢?
从stackoverflow上查到,当Elasticsearch所在磁盘占用大于等于95%时,Elasticsearch会把所有相关索引自动置为只读。(Elasticsearch官方文档有介绍

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

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


返回信息:

{
  "index_name" : {
    "settings" : {
      "index" : {
        "number_of_shards" : "5",
        "blocks" : {
          "read_only_allow_delete" : "true"
        },
        "provided_name" : "index_name",
        "creation_date" : "1516454800021",
        "number_of_replicas" : "1",
        "uuid" : "6WjhtrARTOOjsEUaOqNzlw",
        "version" : {
          "created" : "6010199"
        }
      }
    }
  }
}


发现确实这个索引的 read_only_allow_delete 属性是 true,由此导致了无法再向其中插入文档。

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

建议采用第一种,注意解决之后,需要手动把被锁的索引的只读模式关闭。

按照官档去关闭只读模式有坑,HTTP请求头Content-Type如果不对会报错:

curl -XPUT 'localhost:9200/index_name/_settings'  -d '{"index.blocks.read_only_allow_delete": null}'

 

{"error":"Content-Type header [application/x-www-form-urlencoded] is not supported","status":406}


所以自定一下Content-Type,返回成功:

curl -XPUT 'localhost:9200/index_name/_settings'  -H 'Content-Type: application/json' -d '{"index.blocks.read_only_allow_delete": null}'

 

{"acknowledged":true}


再去查看配置信息:

{
  "index_name" : {
    "settings" : {
      "index" : {
        "creation_date" : "1516454800021",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "6WjhtrARTOOjsEUaOqNzlw",
        "version" : {
          "created" : "6010199"
        },
        "provided_name" : "index_name"
      }
    }
  }
}


已经OK了。
再看项目,写入已经正常,问题解决完毕。

在生产环境中,还是要确保磁盘的使用率不能过高,尤其是系统盘,数据的存储还是尽量放到挂载的大硬盘下。
————————————————
版权声明:本文为CSDN博主「草小诚」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cxcjoker7894/article/details/84504418

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值