--- title: "删除悬空索引" date: 2026-01-14 lastmod: 2026-01-14 description: "删除指定的悬空索引" tags: ["索引", "集群", "删除"] summary: "删除指定的悬空索引,将其移动到索引墓地(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?" --- 删除指定的悬空索引,将其移动到索引墓地(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 ``` ```json { "acknowledged": true } ``` ### 错误响应 ```json { "error": { "type": "illegal_argument_exception", "reason": "accept_data_loss must be set to true" } } ``` ### 未找到悬空索引 ```json { "error": { "type": "illegal_argument_exception", "reason": "No dangling index found for UUID [abc123-def456-ghi789-jkl012]" } } ``` ## 响应字段说明 | 字段 | 类型 | 描述 | |------|------|------| | `acknowledged` | Boolean | 操作是否被确认执行 | ## 处理流程 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. **墓地机制**:索引被添加到墓地而非直接删除