---
title: "查询恢复状态"
date: 2026-03-24
lastmod: 2026-03-24
description: "介绍如何使用 Cat API 查询 Easysearch 集群中分片的恢复状态和进度。"
tags: ["Cat API", "分片", "恢复", "监控"]
summary: "此 API 用于显示集群中分片恢复的状态信息和进度。
API # GET /_cat/recovery GET /_cat/recovery/{index} API 的作用 # 返回集群中分片恢复的详细信息,包括:
恢复进度:文件和字节的恢复百分比 恢复速度:已恢复的文件数和字节数 恢复类型:节点间复制或从快照恢复 源和目标节点:恢复的源节点和目标节点信息 时间信息:恢复的开始时间、结束时间和耗时 此 API 对于监控副本分片创建、节点故障恢复、快照恢复等场景非常有用。
API 的参数 # 路由参数 # 参数 类型 是否必需 描述 index string 可选 索引名称
支持逗号分隔多个索引
支持通配符 * 查询字符串参数 # 参数 类型 是否必需 默认值 描述 active_only boolean 可选 false 是否只显示正在进行中的恢复操作 bytes string 可选 自动 字节显示单位"
---
此 API 用于显示集群中分片恢复的状态信息和进度。
## API
```
GET /_cat/recovery
GET /_cat/recovery/{index}
```
## API 的作用
返回集群中分片恢复的详细信息,包括:
- **恢复进度**:文件和字节的恢复百分比
- **恢复速度**:已恢复的文件数和字节数
- **恢复类型**:节点间复制或从快照恢复
- **源和目标节点**:恢复的源节点和目标节点信息
- **时间信息**:恢复的开始时间、结束时间和耗时
此 API 对于监控副本分片创建、节点故障恢复、快照恢复等场景非常有用。
## API 的参数
### 路由参数
| 参数 | 类型 | 是否必需 | 描述 |
|------|------|----------|------|
| `index` | string | 可选 | 索引名称
支持逗号分隔多个索引
支持通配符 `*` |
### 查询字符串参数
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|------|------|----------|--------|------|
| `active_only` | boolean | 可选 | false | 是否只显示正在进行中的恢复操作 |
| `bytes` | string | 可选 | 自动 | 字节显示单位
可选值:`b`, `kb`, `mb`, `gb`, `tb`, `pb` |
| `detailed` | boolean | 可选 | false | 是否显示更详细的恢复信息,包括物理文件列表 |
| `format` | string | 可选 | text | 响应格式
可选值:`json`, `yaml`, `text` |
| `h` | string | 可选 | 默认列 | 指定显示的列,逗号分隔 |
| `help` | boolean | 可选 | false | 显示帮助信息 |
| `index` | string | 可选 | 所有索引 | 限制恢复信息到特定索引 |
| `master_timeout` | time | 可选 | 30s | 等待主节点响应的超时时间 |
| `s` | string | 可选 | - | 排序列
支持 `:asc` 和 `:desc` |
| `time` | string | 可选 | 自动 | 时间显示单位
可选值:`d`, `h`, `m`, `s`, `ms`, `micros`, `nanos` |
| `v` | boolean | 可选 | false | 详细模式,显示列头 |
## 返回的字段信息
| 列名 | 别名 | 描述 |
|------|------|------|
| `index` | `i`, `idx` | 索引名称 |
| `shard` | `s`, `sh` | 分片 ID |
| `start_time` | `start`, `start_millis` | 恢复开始时间 |
| `stop_time` | `stop`, `stop_millis` | 恢复结束时间 |
| `time` | `t`, `ti` | 恢复耗时 |
| `type` | `ty` | 恢复类型(如 STORE、SNAPSHOT、PEER) |
| `stage` | `st` | 恢复阶段 |
| `source_host` | `shost` | 源主机名 |
| `source_node` | `snode` | 源节点名称 |
| `target_host` | `thost` | 目标主机名 |
| `target_node` | `tnode` | 目标节点名称 |
| `repository` | `rep` | 仓库名称(仅快照恢复) |
| `snapshot` | `snap` | 快照名称(仅快照恢复) |
| `files` | `f` | 需要恢复的文件数 |
| `files_recovered` | `fr` | 已恢复的文件数 |
| `files_percent` | `fp` | 文件恢复百分比 |
| `files_total` | `tf` | 总文件数 |
| `bytes` | `b` | 需要恢复的字节数 |
| `bytes_recovered` | `br` | 已恢复的字节数 |
| `bytes_percent` | `bp` | 字节恢复百分比 |
| `bytes_total` | `tb` | 总字节数 |
| `translog_ops` | `to` | 需要恢复的事务日志操作数 |
| `translog_ops_recovered` | `tor` | 已恢复的事务日志操作数 |
| `translog_ops_percent` | `top` | 事务日志操作恢复百分比 |
## 恢复类型说明
| 类型 | 描述 |
|------|------|
| `STORE` | 从本地存储恢复(如节点重启后) |
| `SNAPSHOT` | 从快照恢复 |
| `PEER` | 从其他节点恢复(节点间复制) |
## 恢复阶段说明
| 阶段 | 描述 |
|------|------|
| `INIT` | 初始化 |
| `INDEX` | 索引文件恢复 |
| `VERIFY_INDEX` | 验证索引 |
| `TRANSLOG` | 事务日志恢复 |
| `FINALIZE` | 完成恢复 |
| `DONE` | 恢复完成 |
## 请求示例
```bash
# 查询所有分片的恢复状态
GET /_cat/recovery
# 显示列头
GET /_cat/recovery?v
# 查询指定索引的恢复状态
GET /_cat/recovery/my-index
# 只显示正在进行中的恢复
GET /_cat/recovery?active_only=true
# 使用 JSON 格式
GET /_cat/recovery?format=json
# 只显示特定列
GET /_cat/recovery?h=index,shard,type,bytes_percent
# 按恢复百分比排序
GET /_cat/recovery?s=bytes_percent:desc
# 显示详细恢复信息
GET /_cat/recovery?detailed=true
# 设置字节单位为 GB
GET /_cat/recovery?bytes=gb
```
## 响应示例
### 文本格式(默认)
```
index shard start_time stop_time time type stage source_host source_node target_host target_node bytes_recovered bytes_percent
logs 0 10:30:00 10:32:15 2m15s PEER DONE 10.0.1.10 node-1 10.0.1.11 node-2 5.2gb 100.0%
logs 1 10:31:00 - - PEER INDEX 10.0.1.10 node-1 10.0.1.12 node-3 2.8gb 54.3%
```
### JSON 格式
```json
[
{
"index": "logs",
"shard": "0",
"start_time": "10:30:00",
"stop_time": "10:32:15",
"time": "2m15s",
"type": "PEER",
"stage": "DONE",
"source_host": "10.0.1.10",
"source_node": "node-1",
"target_host": "10.0.1.11",
"target_node": "node-2",
"bytes_recovered": "5.2gb",
"bytes_percent": "100.0%"
}
]
```
### 快照恢复示例
```
index shard start_time stop_time time type stage repository snapshot bytes_recovered bytes_percent
backup-idx 0 09:00:00 09:15:30 15m30s SNAPSHOT DONE backup_repo snap1 50gb 100.0%
```
## 使用场景
1. **副本恢复监控**:监控副本分片的创建进度
2. **节点故障恢复**:查看故障节点分片的恢复状态
3. **快照恢复**:监控从快照恢复数据的进度
4. **性能分析**:分析恢复速度,识别瓶颈
5. **问题排查**:诊断分片无法恢复的问题
## 恢复场景
### 1. 副本分片创建
当增加副本数时,从主分片恢复到新节点:
```
type: PEER
stage: DONE -> INDEX -> TRANSLOG -> FINALIZE -> DONE
```
### 2. 节点故障恢复
节点故障后,分片恢复到其他节点:
```
type: PEER
stage: INIT -> INDEX -> VERIFY_INDEX -> TRANSLOG -> FINALIZE -> DONE
```
### 3. 从快照恢复
从备份快照恢复索引:
```
type: SNAPSHOT
repository: backup_repo
snapshot: snapshot_name
```
## 注意事项
1. 此 API 只支持 GET 方法
2. 已完成的恢复操作默认也会显示,使用 `active_only=true` 只查看进行中的
3. 恢复操作可能对集群性能产生影响,建议在低峰期进行
4. 大规模恢复时建议监控网络和磁盘 I/O
5. `detailed=true` 会返回更多详细信息,但响应时间更长
## 恢复性能优化
1. **调整恢复速度**:通过 `indices.recovery.max_bytes_per_sec` 限制恢复带宽
2. **并发控制**:通过 `cluster.routing.allocation.node_concurrent_recoveries` 控制并发恢复数
3. **分片大小**:合理规划分片大小,避免单个分片过大导致恢复时间过长
4. **网络带宽**:确保节点间有足够的网络带宽
## 最佳实践
1. **监控进度**:定期检查恢复进度,确保按预期完成
2. **设置告警**:对恢复时间超过预期的情况设置告警
3. **选择低峰期**:在大规模恢复操作时选择业务低峰期
4. **验证完成**:恢复完成后验证数据完整性
5. **备份策略**:制定合理的快照备份策略
## 相关文档
- [查询分片](./get-shard.md)
- [查询分片分配](./get-shard-allocation.md)
- [创建快照](./create-snapshot.md)
- [恢复快照](./restore-snapshot.md)