{
  "id": "elasticsearch/index-blocked-by-disk-threshold",
  "signature": "ClusterBlockException: index [my_index] blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]; disk usage exceeded threshold [95%] on node [node-1]",
  "signature_zh": "ClusterBlockException: 索引[my_index]被阻塞：[FORBIDDEN/12/index read-only / allow delete (api)]；节点[node-1]磁盘使用率超过阈值[95%]",
  "regex": "ClusterBlockException: index \\[.*\\] blocked by: \\[FORBIDDEN/12/index read-only / allow delete \\(api\\)\\]; disk usage exceeded threshold \\[\\d+%\\] on node \\[.*\\]",
  "domain": "elasticsearch",
  "category": "resource_error",
  "subcategory": null,
  "root_cause": "Disk usage on a node exceeded the high watermark (default 95%), causing Elasticsearch to block write operations to protect against data loss.",
  "root_cause_type": "generic",
  "root_cause_zh": "节点上的磁盘使用率超过了高水位线（默认95%），导致Elasticsearch阻止写入操作以防止数据丢失。",
  "versions": [
    {
      "version": "Elasticsearch 7.10",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Elasticsearch 8.0",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    },
    {
      "version": "Elasticsearch 8.9",
      "introduced": null,
      "deprecated": null,
      "removed": null,
      "behavior_change": null,
      "status": "active"
    }
  ],
  "os_specific": {},
  "dead_ends": [
    {
      "action": "Manually removing the index block with `PUT my_index/_settings {\"index.blocks.read_only_allow_delete\": null}` without freeing disk space",
      "why_fails": "The block will be reapplied by the cluster when the next disk check runs, as disk usage remains high.",
      "fail_rate": 0.9,
      "condition": "",
      "sources": []
    },
    {
      "action": "Increasing the disk watermark thresholds in elasticsearch.yml (e.g., `cluster.routing.allocation.disk.watermark.high: 98%`)",
      "why_fails": "This only delays the problem and risks data loss if disk fills completely.",
      "fail_rate": 0.7,
      "condition": "",
      "sources": []
    },
    {
      "action": "Deleting the index entirely to free space",
      "why_fails": "This is a destructive action that may cause data loss; it should only be a last resort.",
      "fail_rate": 0.5,
      "condition": "",
      "sources": []
    }
  ],
  "workarounds": [
    {
      "action": "Free disk space by deleting old indices or moving data: `POST _reindex {\"source\": {\"index\": \"old_index\"}, \"dest\": {\"index\": \"new_index\"}}` then delete old index",
      "success_rate": 0.9,
      "how": "Free disk space by deleting old indices or moving data: `POST _reindex {\"source\": {\"index\": \"old_index\"}, \"dest\": {\"index\": \"new_index\"}}` then delete old index",
      "condition": "",
      "sources": []
    },
    {
      "action": "Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {\"transient\": {\"cluster.routing.rebalance.enable\": \"all\"}}`",
      "success_rate": 0.85,
      "how": "Increase disk capacity by adding a new node or expanding storage, then rebalance shards: `PUT _cluster/settings {\"transient\": {\"cluster.routing.rebalance.enable\": \"all\"}}`",
      "condition": "",
      "sources": []
    },
    {
      "action": "Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {\"transient\": {\"cluster.routing.allocation.disk.threshold_enabled\": false}}` (use with caution)",
      "success_rate": 0.7,
      "how": "Temporarily disable the disk allocation decider to allow writes: `PUT _cluster/settings {\"transient\": {\"cluster.routing.allocation.disk.threshold_enabled\": false}}` (use with caution)",
      "condition": "",
      "sources": []
    }
  ],
  "workarounds_zh": [
    "通过删除旧索引或移动数据释放磁盘空间：`POST _reindex {\"source\": {\"index\": \"old_index\"}, \"dest\": {\"index\": \"new_index\"}}` 然后删除旧索引",
    "通过添加新节点或扩展存储增加磁盘容量，然后重新平衡分片：`PUT _cluster/settings {\"transient\": {\"cluster.routing.rebalance.enable\": \"all\"}}`",
    "临时禁用磁盘分配决策器以允许写入：`PUT _cluster/settings {\"transient\": {\"cluster.routing.allocation.disk.threshold_enabled\": false}}`（谨慎使用）"
  ],
  "transition_graph": {
    "leads_to": [],
    "preceded_by": [],
    "frequently_confused_with": []
  },
  "official_doc_url": "https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-usage-exceeded.html",
  "official_doc_section": null,
  "error_code": "DISK_WATERMARK_BLOCK",
  "verification_tier": "ai_generated",
  "confidence": 0.9,
  "fix_success_rate": 0.85,
  "resolvable": "true",
  "first_seen": "2023-08-25",
  "last_confirmed": "2024-06-01",
  "last_updated": "2024-06-01",
  "evidence_count": 1,
  "tags": [],
  "locale": "en",
  "aliases": []
}