删除指定的悬空索引,将其移动到索引墓地(Index Graveyard)。
API 格式 #
DELETE /_dangling/{index_uuid}
注意:API 路径使用 index_uuid 而非 index_name。
API 作用 #
该 API 用于删除集群中的悬空索引。删除操作会将索引移动到索引墓地,标记为已删除。
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{index_uuid} | String | 是 | - | 要删除的悬空索引的 UUID |
查询参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
accept_data_loss | Boolean | 是 | false | 必须设置为 true 以确认接受数据丢失 |
timeout | Time | 否 | 请求超时 | 操作超时时间 |
master_timeout | Time | 否 | 主节点超时 | 等待主节点响应的超时时间 |
请求示例 #
删除悬空索引 #
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]"
}
}
响应字段说明 #
| 字段 | 类型 | 描述 |
|---|---|---|
acknowledged | Boolean | 操作是否被确认执行 |
处理流程 #
- 验证悬空索引:检查指定的 UUID 是否对应实际的悬空索引
- 确认数据丢失:验证
accept_data_loss参数是否为true - 检查现有索引:确认集群状态中不存在同 UUID 的索引
- 检查墓地状态:确认索引不在墓地中
- 添加到墓地:将索引添加到集群状态的索引墓地
错误场景 #
| 错误 | 原因 |
|---|---|
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}:导入悬空索引
使用场景 #
- 清理冗余索引:删除不需要的悬空索引
- 集群一致性:维护集群状态与磁盘数据的一致性
- 故障恢复:在元数据重建后清理过时索引
注意事项 #
- 不可逆操作:删除后索引数据将无法恢复
- 必须确认:必须显式设置
accept_data_loss=true作为安全保护 - UUID 而非名称:使用索引 UUID 而非名称进行删除
- 墓地机制:索引被添加到墓地而非直接删除





