📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

删除指定的悬空索引,将其移动到索引墓地(Index Graveyard)。

API 格式 #

DELETE /_dangling/{index_uuid}

注意:API 路径使用 index_uuid 而非 index_name

API 作用 #

该 API 用于删除集群中的悬空索引。删除操作会将索引移动到索引墓地,标记为已删除。

API 参数 #

路径参数 #

参数类型是否必填默认值描述
{index_uuid}String-要删除的悬空索引的 UUID

查询参数 #

参数类型是否必填默认值描述
accept_data_lossBooleanfalse必须设置为 true 以确认接受数据丢失
timeoutTime请求超时操作超时时间
master_timeoutTime主节点超时等待主节点响应的超时时间

请求示例 #

删除悬空索引 #

DELETE /_dangling/abc123-def456-ghi789-jkl012?accept_data_loss=true

设置超时时间 #

DELETE /_dangling/abc123-def456-ghi789-jkl012?accept_data_loss=true&timeout=30s

响应示例 #

成功响应 #

202 Accepted
{
  "acknowledged": true
}

错误响应 #

{
  "error": {
    "type": "illegal_argument_exception",
    "reason": "accept_data_loss must be set to true"
  }
}

未找到悬空索引 #

{
  "error": {
    "type": "illegal_argument_exception",
    "reason": "No dangling index found for UUID [abc123-def456-ghi789-jkl012]"
  }
}

响应字段说明 #

字段类型描述
acknowledgedBoolean操作是否被确认执行

处理流程 #

  1. 验证悬空索引:检查指定的 UUID 是否对应实际的悬空索引
  2. 确认数据丢失:验证 accept_data_loss 参数是否为 true
  3. 检查现有索引:确认集群状态中不存在同 UUID 的索引
  4. 检查墓地状态:确认索引不在墓地中
  5. 添加到墓地:将索引添加到集群状态的索引墓地

错误场景 #

错误原因
accept_data_loss must be set to true未设置 accept_data_loss=true 参数
No dangling index found for UUID未找到指定 UUID 的悬空索引
Index already exists in cluster state该 UUID 的索引已存在于集群状态中

相关操作 #

  • GET /_dangling:查询所有悬空索引
  • POST /_dangling/{index_uuid}:导入悬空索引

使用场景 #

  1. 清理冗余索引:删除不需要的悬空索引
  2. 集群一致性:维护集群状态与磁盘数据的一致性
  3. 故障恢复:在元数据重建后清理过时索引

注意事项 #

  1. 不可逆操作:删除后索引数据将无法恢复
  2. 必须确认:必须显式设置 accept_data_loss=true 作为安全保护
  3. UUID 而非名称:使用索引 UUID 而非名称进行删除
  4. 墓地机制:索引被添加到墓地而非直接删除