此 API 用于获取集群中指定任务的详细信息。
API #
GET /_tasks/{task_id}
API 的作用 #
返回集群中指定任务的详细信息和当前状态。任务是在集群中运行的任何操作,例如搜索、索引、重建索引等。通过任务 ID,可以获取特定任务的:
- 任务状态:当前运行状态
- 执行时间:任务开始时间和运行时长
- 任务类型:任务的类型和操作
- 可取消性:任务是否可以被取消
- 执行节点:任务执行所在的节点信息
API 的参数 #
路由参数 #
| 参数 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
task_id | string | 必需 | 任务 ID 格式: node_id:task_number例如: Mgqdm0f9SEGClWxp_RdnaQ:17416node_id:节点的唯一标识符task_number:节点内任务的数字 ID |
查询字符串参数 #
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|---|
wait_for_completion | boolean | 可选 | false | 是否等待任务完成true:阻塞直到任务完成false:立即返回当前状态 |
timeout | time | 可选 | 无 | 操作超时时间 当 wait_for_completion=true 时有效格式: 30s, 1m, 5m 等 |
请求示例 #
# 查询指定任务的当前状态
GET /_tasks/Mgqdm0f9SEGClWxp_RdnaQ:17416
# 等待任务完成
GET /_tasks/Mgqdm0f9SEGClWxp_RdnaQ:17416?wait_for_completion=true
# 设置等待超时时间
GET /_tasks/Mgqdm0f9SEGClWxp_RdnaQ:17416?wait_for_completion=true&timeout=5m
响应示例 #
成功响应 #
{
"nodes": {
"Mgqdm0f9SEGClWxp_RdnaQ": {
"name": "data-node-1",
"transport_address": "192.168.1.10:9300",
"host": "192.168.1.10",
"ip": "192.168.1.10:9300",
"roles": ["data", "ingest", "master"],
"tasks": {
"Mgqdm0f9SEGClWxp_RdnaQ:17416": {
"node": "Mgqdm0f9SEGClWxp_RdnaQ",
"id": 17416,
"type": "transport",
"action": "indices:data/write/reindex",
"status": {
"total": 10000,
"updated": 5000,
"created": 0,
"deleted": 0,
"batches": 5,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1,
"throttled_until_millis": 0
},
"description": "reindex from [source-index] to [target-index]",
"running_time_in_nanos": 15234567890,
"cancellable": true,
"headers": {}
}
}
}
}
}
任务已完成的响应 #
{
"completed": true,
"task": {
"node": "Mgqdm0f9SEGClWxp_RdnaQ",
"id": 17416,
"type": "transport",
"action": "indices:data/write/reindex",
"status": {
"total": 10000,
"updated": 10000,
"created": 0,
"deleted": 0
},
"description": "reindex from [source-index] to [target-index]",
"running_time_in_nanos": 52345678901,
"cancellable": false
},
"response": {
"took": 52345,
"timed_out": false,
"total": 10000,
"updated": 10000,
"created": 0,
"deleted": 0,
"batches": 10,
"version_conflicts": 0,
"failures": []
}
}
响应字段说明 #
节点信息字段 #
| 字段 | 描述 |
|---|---|
name | 节点名称 |
transport_address | 传输层地址 |
host | 主机地址 |
ip | IP 地址和端口 |
roles | 节点角色列表 |
任务信息字段 #
| 字段 | 描述 |
|---|---|
node | 执行任务的节点 ID |
id | 任务数字 ID |
type | 任务类型 |
action | 任务操作 |
status | 任务状态信息(因任务类型而异) |
description | 任务描述 |
running_time_in_nanos | 任务运行时长(纳秒) |
cancellable | 任务是否可取消 |
headers | 请求头信息 |
使用场景 #
- 任务监控:监控长时间运行任务的进度
- 问题排查:诊断任务执行中的问题
- 性能分析:分析任务的执行时间和资源消耗
- 异步操作:等待异步任务完成并获取结果
获取任务 ID #
任务 ID 可以从以下途径获取:
- 创建任务时返回:某些 API(如 reindex)会在响应中返回 task_id
- 查询所有任务:使用
GET /_tasks获取所有任务列表 - X-Opaque-Id 头:通过请求头
X-Opaque-Id关联请求与任务
任务状态说明 #
任务状态取决于任务类型,常见状态包括:
| 任务类型 | 状态字段示例 |
|---|---|
| Reindex | total, updated, created, deleted, batches |
| Delete By Query | total, deleted, batches, version_conflicts |
| Update By Query | total, updated, version_conflicts |
注意事项 #
- 此 API 只支持 GET 方法
- 任务 ID 必须符合
node_id:task_number格式 - 如果任务已完成且结果已存储,API 会返回完成后的任务信息
wait_for_completion=true时会阻塞请求直到任务完成或超时- 任务完成后,任务信息会被存储一段时间供查询





