elasticsearch打上了 index.blocks.read_only_allow_delete 只读锁
当前位置:

elasticsearch打上了 index.blocks.read_only_allow_delete 只读锁

别摸 |  2026-10-15
 10人浏览
摘要:索引被 ES 打上了 index.blocks.read_only_allow_delete 只读锁,任何 settings 修改都会被拒绝。这个锁通常是磁盘曾超过 95% 水位时 ES 自动加的保护(你后来清理了磁盘,但锁没自动解除),也可能是有人手动设置过。

第一步:解除只读锁

只解这一个索引:

bash

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

或一次性解开所有索引:

bash

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

(null 是 ES 7.x/8.x 移除该设置的标准写法)

第二步:锁解除后,再跑副本清零

bash

curl -X PUT "localhost:9200/_settings" -H 'Content-Type: application/json' -d '{"index.number_of_replicas":0}'

两步都执行完,那 100 个 UNASSIGNED 副本分片就会全部消失,集群恢复健康。

收尾检查

bash

# 确认没有残留的只读块
curl "localhost:9200/_all/_settings?flat_settings=true&pretty" | grep -i read_only

# 确认集群健康(预期从 red 变 yellow)
curl "localhost:9200/_cluster/health?pretty"

提醒

  • 如果这是磁盘满触发的自动锁,建议顺手把磁盘水位阈值调一下,留出余量避免再被锁: 有用户名密码的话加上 -u elastic:password bash
  curl -X PUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{"transient":{"cluster.routing.allocation.disk.watermark.low":"90%","cluster.routing.allocation.disk.watermark.high":"93%"}}'

*

文章评论

排名:
这家伙很懒,什么都没有留下
经验值
经验值:undefined/undefined
0
文章
0
评论
0
勋章
0
动态
0
粉丝
0
关注
获得勋章: