文档首页/ 云搜索服务 CSS/ 故障排除/ 功能使用类/ CSS集群索引写入数据失败
更新时间:2026-07-29 GMT+08:00
分享

CSS集群索引写入数据失败

问题描述

向Elasticsearch/OpenSearch集群索引中写入数据失败,返回如下报错信息:

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

索引被设置为只读模式(read-only / allow delete),所有写入操作(包括创建、更新文档)均被阻止。

问题原因

当数据节点的磁盘使用率超过95%时,Elasticsearch/OpenSearch为了防止节点耗尽磁盘空间导致系统崩溃,自动将索引设置为只读模式(“index.blocks.read_only_allow_delete”设置为“true”)。在此模式下,所有写入请求被拒绝,仅保留删除权限以释放空间。

不同版本的自动恢复机制存在差异:

  • Elasticsearch 7.10.2及OpenSearch版本:磁盘使用率下降后自动关闭只读模式,无需手动解除。
  • Elasticsearch 7.10.2之前的版本:磁盘使用率下降后不会自动关闭只读模式,需手动解除。

解决方法

  1. 检查集群的监控指标,确认磁盘使用率,如磁盘使用率超过95%,则需清理或扩容磁盘。
  2. 清理磁盘空间或扩容磁盘。
    • 清理磁盘:删除不再使用的索引或过期数据,释放磁盘空间。

      执行以下命令,删除指定索引:

      DELETE /<索引名称>

      删除索引操作不可恢复,请确认索引不再需要后再执行删除。

    • 扩容磁盘:在集群管理页面单击操作列的“更多 > 形态变更”,扩容数据节点(或冷数据节点)的磁盘容量。
  3. 解除索引只读模式。
    • Elasticsearch 7.10.2及OpenSearch版本

      该版本的集群磁盘使用率下降后会自动关闭只读模式。等待约1~2分钟后,重新尝试写入数据验证是否恢复正常。

    • Elasticsearch 7.10.2之前的版本

      该版本的集群磁盘使用率下降后不会自动关闭只读模式,需手动解除只读模式。

      1. 执行以下命令,解除所有索引的只读模式:
        PUT /_all/_settings
        {
          "index.blocks.read_only_allow_delete": null
        }

        执行此命令前需确保磁盘使用率已下降至安全水位,否则解除只读模式后磁盘仍可能再次触发只读保护。

      2. 等待约1~2分钟后,重新尝试写入数据验证是否恢复正常。
  4. 为避免故障再次发生,建议:
    • 定期监控节点磁盘使用率,配置告警阈值(建议85%)。
    • 定期清理过期索引和文档,释放磁盘空间。
    • 规划充足的存储容量,预留15%~20%的磁盘冗余空间。

相关文档