将指定的悬空索引导入回集群,恢复其元数据和可用性。
API 格式 #
POST /_dangling/{index_uuid}
注意:API 路径使用 index_uuid 而非 index_name。
API 作用 #
该 API 用于将悬空索引导入回集群。悬空索引是指在磁盘上存在但未在集群状态中注册的索引。该 API 允许管理员恢复这些索引。
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{index_uuid} | String | 是 | - | 要导入的悬空索引的 UUID |
查询参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
accept_data_loss | Boolean | 是 | false | 必须设置为 true 以确认接受数据丢失风险 |
timeout | Time | 否 | 请求超时 | 操作的超时时间 |
master_timeout | Time | 否 | 主节点超时 | 等待主节点响应的超时时间 |
请求示例 #
导入悬空索引 #
POST /_dangling/abc123-def456-ghi789-jkl012?accept_data_loss=true
设置超时时间 #
POST /_dangling/abc123-def456-ghi789-jkl012?accept_data_loss=true&timeout=60s
响应示例 #
成功响应 #
200 OK
{
"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 - 元数据选择:如果多个节点拥有同一索引的元数据,选择版本最高的
- 索引分配:
LocalAllocateDangledIndices服务执行实际分配 - 返回确认:成功后返回
acknowledged: true
内部处理细节 #
- 多节点处理:API 搜索所有节点的悬空索引元数据
- 版本选择:当多个节点有同一索引的元数据时,自动选择最高版本
- 分配服务:由
LocalAllocateDangledIndices服务执行实际分配操作
错误场景 #
| 错误 | 原因 | 解决方法 |
|---|---|---|
accept_data_loss must be set to true | 未设置确认标志 | 在查询参数中添加 accept_data_loss=true |
No dangling index found for UUID | 未找到对应的悬空索引 | 使用 GET /_dangling 查询可用的悬空索引 |
Connection failure | 节点连接失败 | 检查网络连接和节点状态 |
相关操作 #
- GET /_dangling:查询所有悬空索引
- DELETE /_dangling/{index_uuid}:删除悬空索引
使用场景 #
- 故障恢复:在集群元数据丢失后恢复索引
- 节点重新加入:将离线节点的索引重新集成到集群
- 数据恢复:从备份的索引文件恢复数据
注意事项 #
- 数据丢失风险:导入操作可能导致数据冲突或丢失,需谨慎操作
- 必须确认:必须显式设置
accept_data_loss=true作为安全保护 - UUID 识别:使用索引 UUID 而非名称进行导入
- 版本选择:多节点元数据时自动选择最高版本
- 分配时间:大型索引的分配可能需要较长时间
API 规范说明 #
该 API 在 REST API 规范中的定义为:
- 规范文件:
rest-api-spec/api/dangling_indices.import_dangling_index.json - 实际端点:
POST /_dangling/{index_uuid} - 返回类型:
AcknowledgedResponse





