ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]锁...

本文介绍了解除Elasticsearch中Twitter索引的只读状态的方法,通过使用PUT请求和特定设置,允许删除操作,解决数据更新问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PUT /twitter/_settings 
{ 
   "index.blocks.read_only_allow_delete": null 
}

官网给出的解决办法

 

转载于:https://www.cnblogs.com/lb809663396/p/11130202.html

<think>嗯,用户遇到了ElasticsearchFORBIDDEN/12/index read-only/allow delete错误,需要解决。首先,我得回忆一下这个错误的原因。通常,这个错误是因为Elasticsearch的索引进入了只读模式,可能是因为磁盘空间不足导致的。Elasticsearch默认会在磁盘使用超过95%时把索引设为只读,防止进一步写入导致磁盘爆满。所以,第一步应该检查磁盘空间,看看是不是这个问题。 如果磁盘确实快满了,用户需要清理空间,比如删除不必要的索引、日志文件,或者扩容磁盘。清理之后,可能还需要手动解除只读状态,因为即使空间释放了,Elasticsearch不会自动恢复可写状态。这时候需要用curl命令发送PUT请求,把index.blocks.read_only_allow_delete设为null,或者false,具体要看ES的版本。根据引用中的例子,用户可能需要执行类似curl -XPUT的命令,调整设置。 另外,可能还要调整集群的设置,比如设置磁盘水位线,避免再次触发只读模式。比如,把cluster.routing.allocation.disk.watermark.low和high调低,比如到85%和90%,这样提前预警,避免达到95%。不过修改集群设置需要权限,用户可能需要有相应的权限才能操作。 然后,还要考虑是否有其他原因导致索引进入只读模式,比如文件系统权限问题,或者索引损坏。但最常见的是磁盘空间问题。所以步骤应该是先检查磁盘,清理空间,然后解除只读,最后调整配置防止再次发生。 用户提供的引用里提到了使用curl命令来修改索引设置,其中引用2和3给出了具体的命令示例。需要确认用户使用的Elasticsearch版本,因为不同版本的命令可能略有不同,但大多数情况下,设置index.blocks.read_only_allow_delete为null应该有效。另外,如果_all或者index_*无法使用,可能需要指定具体的索引名称。 总结解决步骤:检查磁盘空间,清理空间,解除只读状态,调整水位线设置。同时,确保操作命令正确,比如正确的端点、JSON格式等。可能还要提醒用户定期监控磁盘使用情况,避免问题再次发生。</think>### Elasticsearch索引只读错误解决方法 #### 原因分析 Elasticsearch索引进入只读模式的主要原因是**磁盘空间使用超过95%的默认阈值**,系统为防止数据丢失自动触发保护机制。此时索引只能执行读取和删除操作,无法写入或修改数据[^1][^2][^3]。 $$ \text{索引状态} = \begin{cases} \text{可读写} & \text{当磁盘空间} < 95\% \\ \text{只读模式} & \text{当磁盘空间} \geq 95\% \end{cases} $$ #### 解决步骤 1. **检查磁盘空间** ```bash df -h /path/to/elasticsearch/data ``` 若使用率≥95%,需清理旧索引或扩容存储 2. **临时解除只读模式** ```bash curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{ "index.blocks.read_only_allow_delete": null }' ``` 该命令对所有索引生效[^2] 3. **永久解决方案** ```bash # 修改磁盘水位阈值(需重启) curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_cluster/settings -d '{ "persistent": { "cluster.routing.allocation.disk.watermark.low": "85%", "cluster.routing.allocation.disk.watermark.high": "90%", "cluster.routing.allocation.disk.watermark.flood_stage": "95%" } }' ``` 4. **验证状态** ```bash curl -XGET http://localhost:9200/_settings?include_defaults=true ``` #### 操作示例 ```bash # 清理10GB旧日志 rm -rf /var/log/elasticsearch/old_indices/* # 解除特定索引只读状态 curl -XPUT -H "Content-Type: application/json" \ http://localhost:9200/my_index/_settings -d '{ "index.blocks.read_only_allow_delete": null }' ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值