索引恢复 API
编辑索引恢复 API
编辑返回一个或多个索引正在进行和已完成的分片恢复的信息。对于数据流,API 返回流的后备索引的信息。
resp = client.indices.recovery( index="my-index-000001", ) print(resp)
response = client.indices.recovery( index: 'my-index-000001' ) puts response
const response = await client.indices.recovery({ index: "my-index-000001", }); console.log(response);
GET /my-index-000001/_recovery
描述
编辑使用索引恢复 API 获取有关正在进行和已完成的分片恢复的信息。
分片恢复是指初始化分片副本的过程,例如从快照还原主分片或从主分片创建副本分片。当分片恢复完成时,恢复的分片可用于搜索和索引。
在以下过程中,会自动发生恢复
您可以使用 recovery 或 cat recovery API 确定分片恢复的原因。
索引恢复 API 仅报告集群中当前存在的分片副本的已完成恢复信息。它仅报告每个分片副本的最后一次恢复,不报告有关早期恢复的历史信息,也不报告有关不再存在的分片副本的恢复信息。这意味着如果一个分片副本完成恢复,然后 Elasticsearch 将其重新定位到不同的节点,则有关原始恢复的信息将不会显示在恢复 API 中。
路径参数
编辑-
<target>
- (可选,字符串)用于限制请求的以逗号分隔的数据流、索引和别名列表。支持通配符 (
*
)。要定位所有数据流和索引,请省略此参数或使用*
或_all
。
查询参数
编辑-
active_only
- (可选,布尔值)如果为
true
,则响应仅包含正在进行的分片恢复。默认为false
。 -
detailed
- (可选,布尔值)如果为
true
,则响应包含有关分片恢复的详细信息。默认为false
。 -
index
- (可选,字符串)用于限制请求的以逗号分隔的索引名称列表或通配符表达式。
响应正文
编辑-
id
- (整数)分片的 ID。
-
type
-
(字符串)分片的恢复源。返回的值包括
-
EMPTY_STORE
- 一个空的存储。表示一个新的主分片或使用 集群重新路由 API 强制分配的空主分片。
-
EXISTING_STORE
- 现有主分片的存储。表示恢复与节点启动或现有主分片的分配有关。
-
LOCAL_SHARDS
- 同一节点上另一个索引的分片。表示恢复与 克隆、收缩或 拆分操作有关。
-
PEER
- 另一个节点上的主分片。表示恢复与分片复制有关。
-
SNAPSHOT
- 快照。表示恢复与 快照还原操作有关。
-
-
STAGE
-
(字符串)恢复阶段。返回的值可以包括
-
INIT
- 恢复尚未开始。
-
INDEX
- 读取索引元数据并将字节从源复制到目标。
-
VERIFY_INDEX
- 验证索引的完整性。
-
TRANSLOG
- 重放事务日志。
-
FINALIZE
- 清理。
-
DONE
- 完成。
-
-
primary
- (布尔值)如果为
true
,则分片是主分片。 -
start_time
- (字符串)恢复开始的时间戳。
-
stop_time
- (字符串)恢复完成的时间戳。
-
total_time_in_millis
- (字符串)恢复分片的总时间(以毫秒为单位)。
-
source
-
(对象)恢复源。这可以包括
- 如果恢复来自快照,则为存储库描述
- 源节点的描述
-
target
- (对象)目标节点。
-
index
- (对象)有关物理索引恢复的统计信息。
-
translog
- (对象)有关事务日志恢复的统计信息。
-
start
- (对象)有关打开和启动索引的时间的统计信息。
示例
编辑获取多个数据流和索引的恢复信息
编辑resp = client.indices.recovery( index="index1,index2", human=True, ) print(resp)
response = client.indices.recovery( index: 'index1,index2', human: true ) puts response
const response = await client.indices.recovery({ index: "index1,index2", human: "true", }); console.log(response);
GET index1,index2/_recovery?human
获取集群中所有数据流和索引的段信息
编辑resp = client.indices.recovery( human=True, ) print(resp)
response = client.indices.recovery( human: true ) puts response
const response = await client.indices.recovery({ human: "true", }); console.log(response);
GET /_recovery?human
API 返回以下响应
{ "index1" : { "shards" : [ { "id" : 0, "type" : "SNAPSHOT", "stage" : "INDEX", "primary" : true, "start_time" : "2014-02-24T12:15:59.716", "start_time_in_millis": 1393244159716, "stop_time" : "0s", "stop_time_in_millis" : 0, "total_time" : "2.9m", "total_time_in_millis" : 175576, "source" : { "repository" : "my_repository", "snapshot" : "my_snapshot", "index" : "index1", "version" : "{version}", "restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww" }, "target" : { "id" : "ryqJ5lO5S4-lSFbGntkEkg", "host" : "my.fqdn", "transport_address" : "my.fqdn", "ip" : "10.0.1.7", "name" : "my_es_node" }, "index" : { "size" : { "total" : "75.4mb", "total_in_bytes" : 79063092, "reused" : "0b", "reused_in_bytes" : 0, "recovered" : "65.7mb", "recovered_in_bytes" : 68891939, "recovered_from_snapshot" : "0b", "recovered_from_snapshot_in_bytes" : 0, "percent" : "87.1%" }, "files" : { "total" : 73, "reused" : 0, "recovered" : 69, "percent" : "94.5%" }, "total_time" : "0s", "total_time_in_millis" : 0, "source_throttle_time" : "0s", "source_throttle_time_in_millis" : 0, "target_throttle_time" : "0s", "target_throttle_time_in_millis" : 0 }, "translog" : { "recovered" : 0, "total" : 0, "percent" : "100.0%", "total_on_start" : 0, "total_time" : "0s", "total_time_in_millis" : 0 }, "verify_index" : { "check_index_time" : "0s", "check_index_time_in_millis" : 0, "total_time" : "0s", "total_time_in_millis" : 0 } } ] } }
此响应包含有关单个索引恢复单个分片的信息。恢复的源是快照存储库,恢复的目标是 my_es_node
节点。
响应还包括已恢复的文件和字节的数量和百分比。
获取详细的恢复信息
编辑要获取恢复中的物理文件列表,请将 detailed
查询参数设置为 true
。
resp = client.indices.recovery( human=True, detailed=True, ) print(resp)
response = client.indices.recovery( human: true, detailed: true ) puts response
const response = await client.indices.recovery({ human: "true", detailed: "true", }); console.log(response);
GET _recovery?human&detailed=true
API 返回以下响应
{ "index1" : { "shards" : [ { "id" : 0, "type" : "EXISTING_STORE", "stage" : "DONE", "primary" : true, "start_time" : "2014-02-24T12:38:06.349", "start_time_in_millis" : "1393245486349", "stop_time" : "2014-02-24T12:38:08.464", "stop_time_in_millis" : "1393245488464", "total_time" : "2.1s", "total_time_in_millis" : 2115, "source" : { "id" : "RGMdRc-yQWWKIBM4DGvwqQ", "host" : "my.fqdn", "transport_address" : "my.fqdn", "ip" : "10.0.1.7", "name" : "my_es_node" }, "target" : { "id" : "RGMdRc-yQWWKIBM4DGvwqQ", "host" : "my.fqdn", "transport_address" : "my.fqdn", "ip" : "10.0.1.7", "name" : "my_es_node" }, "index" : { "size" : { "total" : "24.7mb", "total_in_bytes" : 26001617, "reused" : "24.7mb", "reused_in_bytes" : 26001617, "recovered" : "0b", "recovered_in_bytes" : 0, "recovered_from_snapshot" : "0b", "recovered_from_snapshot_in_bytes" : 0, "percent" : "100.0%" }, "files" : { "total" : 26, "reused" : 26, "recovered" : 0, "percent" : "100.0%", "details" : [ { "name" : "segments.gen", "length" : 20, "recovered" : 20 }, { "name" : "_0.cfs", "length" : 135306, "recovered" : 135306, "recovered_from_snapshot": 0 }, { "name" : "segments_2", "length" : 251, "recovered" : 251, "recovered_from_snapshot": 0 } ] }, "total_time" : "2ms", "total_time_in_millis" : 2, "source_throttle_time" : "0s", "source_throttle_time_in_millis" : 0, "target_throttle_time" : "0s", "target_throttle_time_in_millis" : 0 }, "translog" : { "recovered" : 71, "total" : 0, "percent" : "100.0%", "total_on_start" : 0, "total_time" : "2.0s", "total_time_in_millis" : 2025 }, "verify_index" : { "check_index_time" : 0, "check_index_time_in_millis" : 0, "total_time" : "88ms", "total_time_in_millis" : 88 } } ] } }
响应包括任何已恢复的物理文件及其大小的列表。
响应还包括以毫秒为单位的各个恢复阶段的时间
- 索引检索
- 事务日志重放
- 索引启动时间
此响应指示恢复已 done
。所有恢复,无论是正在进行的还是已完成的,都保存在集群状态中,并且可以随时报告。
要仅返回有关正在进行的恢复的信息,请将 active_only
查询参数设置为 true
。