- Elasticsearch 指南其他版本
- 8.17 中的新功能
- Elasticsearch 基础
- 快速入门
- 设置 Elasticsearch
- 升级 Elasticsearch
- 索引模块
- 映射
- 文本分析
- 索引模板
- 数据流
- 摄取管道
- 别名
- 搜索您的数据
- 重新排名
- 查询 DSL
- 聚合
- 地理空间分析
- 连接器
- EQL
- ES|QL
- SQL
- 脚本
- 数据管理
- 自动缩放
- 监视集群
- 汇总或转换数据
- 设置高可用性集群
- 快照和还原
- 保护 Elastic Stack 的安全
- Watcher
- 命令行工具
- elasticsearch-certgen
- elasticsearch-certutil
- elasticsearch-create-enrollment-token
- elasticsearch-croneval
- elasticsearch-keystore
- elasticsearch-node
- elasticsearch-reconfigure-node
- elasticsearch-reset-password
- elasticsearch-saml-metadata
- elasticsearch-service-tokens
- elasticsearch-setup-passwords
- elasticsearch-shard
- elasticsearch-syskeygen
- elasticsearch-users
- 优化
- 故障排除
- 修复常见的集群问题
- 诊断未分配的分片
- 向系统中添加丢失的层
- 允许 Elasticsearch 在系统中分配数据
- 允许 Elasticsearch 分配索引
- 索引将索引分配过滤器与数据层节点角色混合,以在数据层之间移动
- 没有足够的节点来分配所有分片副本
- 单个节点上索引的分片总数已超过
- 每个节点的分片总数已达到
- 故障排除损坏
- 修复磁盘空间不足的数据节点
- 修复磁盘空间不足的主节点
- 修复磁盘空间不足的其他角色节点
- 启动索引生命周期管理
- 启动快照生命周期管理
- 从快照恢复
- 故障排除损坏的存储库
- 解决重复的快照策略失败问题
- 故障排除不稳定的集群
- 故障排除发现
- 故障排除监控
- 故障排除转换
- 故障排除 Watcher
- 故障排除搜索
- 故障排除分片容量健康问题
- 故障排除不平衡的集群
- 捕获诊断信息
- REST API
- API 约定
- 通用选项
- REST API 兼容性
- 自动缩放 API
- 行为分析 API
- 紧凑和对齐文本 (CAT) API
- 集群 API
- 跨集群复制 API
- 连接器 API
- 数据流 API
- 文档 API
- 丰富 API
- EQL API
- ES|QL API
- 功能 API
- Fleet API
- 图表探索 API
- 索引 API
- 别名是否存在
- 别名
- 分析
- 分析索引磁盘使用量
- 清除缓存
- 克隆索引
- 关闭索引
- 创建索引
- 创建或更新别名
- 创建或更新组件模板
- 创建或更新索引模板
- 创建或更新索引模板(旧版)
- 删除组件模板
- 删除悬挂索引
- 删除别名
- 删除索引
- 删除索引模板
- 删除索引模板(旧版)
- 存在
- 字段使用情况统计信息
- 刷新
- 强制合并
- 获取别名
- 获取组件模板
- 获取字段映射
- 获取索引
- 获取索引设置
- 获取索引模板
- 获取索引模板(旧版)
- 获取映射
- 导入悬挂索引
- 索引恢复
- 索引段
- 索引分片存储
- 索引统计信息
- 索引模板是否存在(旧版)
- 列出悬挂索引
- 打开索引
- 刷新
- 解析索引
- 解析集群
- 翻转
- 收缩索引
- 模拟索引
- 模拟模板
- 拆分索引
- 解冻索引
- 更新索引设置
- 更新映射
- 索引生命周期管理 API
- 推理 API
- 信息 API
- 摄取 API
- 许可 API
- Logstash API
- 机器学习 API
- 机器学习异常检测 API
- 机器学习数据帧分析 API
- 机器学习训练模型 API
- 迁移 API
- 节点生命周期 API
- 查询规则 API
- 重新加载搜索分析器 API
- 存储库计量 API
- 汇总 API
- 根 API
- 脚本 API
- 搜索 API
- 搜索应用程序 API
- 可搜索快照 API
- 安全 API
- 身份验证
- 更改密码
- 清除缓存
- 清除角色缓存
- 清除权限缓存
- 清除 API 密钥缓存
- 清除服务帐户令牌缓存
- 创建 API 密钥
- 创建或更新应用程序权限
- 创建或更新角色映射
- 创建或更新角色
- 批量创建或更新角色 API
- 批量删除角色 API
- 创建或更新用户
- 创建服务帐户令牌
- 委托 PKI 身份验证
- 删除应用程序权限
- 删除角色映射
- 删除角色
- 删除服务帐户令牌
- 删除用户
- 禁用用户
- 启用用户
- 注册 Kibana
- 注册节点
- 获取 API 密钥信息
- 获取应用程序权限
- 获取内置权限
- 获取角色映射
- 获取角色
- 查询角色
- 获取服务帐户
- 获取服务帐户凭据
- 获取安全设置
- 获取令牌
- 获取用户权限
- 获取用户
- 授予 API 密钥
- 具有权限
- 使 API 密钥失效
- 使令牌失效
- OpenID Connect 准备身份验证
- OpenID Connect 身份验证
- OpenID Connect 注销
- 查询 API 密钥信息
- 查询用户
- 更新 API 密钥
- 更新安全设置
- 批量更新 API 密钥
- SAML 准备身份验证
- SAML 身份验证
- SAML 注销
- SAML 失效
- SAML 完成注销
- SAML 服务提供商元数据
- SSL 证书
- 激活用户配置文件
- 禁用用户配置文件
- 启用用户配置文件
- 获取用户配置文件
- 建议用户配置文件
- 更新用户配置文件数据
- 具有用户配置文件权限
- 创建跨集群 API 密钥
- 更新跨集群 API 密钥
- 快照和还原 API
- 快照生命周期管理 API
- SQL API
- 同义词 API
- 文本结构 API
- 转换 API
- 使用情况 API
- Watcher API
- 定义
- 迁移指南
- 发行说明
- Elasticsearch 版本 8.17.0
- Elasticsearch 版本 8.16.1
- Elasticsearch 版本 8.16.0
- Elasticsearch 版本 8.15.5
- Elasticsearch 版本 8.15.4
- Elasticsearch 版本 8.15.3
- Elasticsearch 版本 8.15.2
- Elasticsearch 版本 8.15.1
- Elasticsearch 版本 8.15.0
- Elasticsearch 版本 8.14.3
- Elasticsearch 版本 8.14.2
- Elasticsearch 版本 8.14.1
- Elasticsearch 版本 8.14.0
- Elasticsearch 版本 8.13.4
- Elasticsearch 版本 8.13.3
- Elasticsearch 版本 8.13.2
- Elasticsearch 版本 8.13.1
- Elasticsearch 版本 8.13.0
- Elasticsearch 版本 8.12.2
- Elasticsearch 版本 8.12.1
- Elasticsearch 版本 8.12.0
- Elasticsearch 版本 8.11.4
- Elasticsearch 版本 8.11.3
- Elasticsearch 版本 8.11.2
- Elasticsearch 版本 8.11.1
- Elasticsearch 版本 8.11.0
- Elasticsearch 版本 8.10.4
- Elasticsearch 版本 8.10.3
- Elasticsearch 版本 8.10.2
- Elasticsearch 版本 8.10.1
- Elasticsearch 版本 8.10.0
- Elasticsearch 版本 8.9.2
- Elasticsearch 版本 8.9.1
- Elasticsearch 版本 8.9.0
- Elasticsearch 版本 8.8.2
- Elasticsearch 版本 8.8.1
- Elasticsearch 版本 8.8.0
- Elasticsearch 版本 8.7.1
- Elasticsearch 版本 8.7.0
- Elasticsearch 版本 8.6.2
- Elasticsearch 版本 8.6.1
- Elasticsearch 版本 8.6.0
- Elasticsearch 版本 8.5.3
- Elasticsearch 版本 8.5.2
- Elasticsearch 版本 8.5.1
- Elasticsearch 版本 8.5.0
- Elasticsearch 版本 8.4.3
- Elasticsearch 版本 8.4.2
- Elasticsearch 版本 8.4.1
- Elasticsearch 版本 8.4.0
- Elasticsearch 版本 8.3.3
- Elasticsearch 版本 8.3.2
- Elasticsearch 版本 8.3.1
- Elasticsearch 版本 8.3.0
- Elasticsearch 版本 8.2.3
- Elasticsearch 版本 8.2.2
- Elasticsearch 版本 8.2.1
- Elasticsearch 版本 8.2.0
- Elasticsearch 版本 8.1.3
- Elasticsearch 版本 8.1.2
- Elasticsearch 版本 8.1.1
- Elasticsearch 版本 8.1.0
- Elasticsearch 版本 8.0.1
- Elasticsearch 版本 8.0.0
- Elasticsearch 版本 8.0.0-rc2
- Elasticsearch 版本 8.0.0-rc1
- Elasticsearch 版本 8.0.0-beta1
- Elasticsearch 版本 8.0.0-alpha2
- Elasticsearch 版本 8.0.0-alpha1
- 依赖项和版本
任务管理 API
编辑任务管理 API
编辑任务管理 API 是新的,仍应视为 beta 功能。API 可能会以不向后兼容的方式更改。有关功能状态,请参阅 #51628。
返回有关集群中当前正在执行的任务的信息。
描述
编辑任务管理 API 返回有关当前在集群中一个或多个节点上执行的任务的信息。
路径参数
编辑-
<task_id>
- (可选,字符串)要返回的任务的 ID (
node_id:task_number
)。
查询参数
编辑-
actions
-
(可选,字符串)用于限制请求的操作的逗号分隔列表或通配符表达式。
省略此参数以返回所有操作。
-
detailed
- (可选,布尔值)如果为
true
,则响应包括有关分片恢复的详细信息。默认为false
。 -
group_by
-
(可选,字符串)用于对响应中的任务进行分组的键。
可能的值是
-
nodes
- (默认)节点 ID
-
parents
- 父任务 ID
-
none
- 不对任务进行分组。
-
-
nodes
- (可选,字符串)用于限制返回信息的节点 ID 或名称的逗号分隔列表。
-
parent_task_id
-
(可选,字符串)用于限制返回信息的父任务 ID。
要返回所有任务,请省略此参数或使用
-1
的值。 -
timeout
- (可选,时间单位)等待每个节点响应的时间段。如果节点在其超时时间到期之前没有响应,则响应不包括其信息。但是,超时节点包含在响应的
node_failures
属性中。默认为30s
。 -
wait_for_completion
- (可选,布尔值)如果为
true
,则请求会阻塞,直到找到的所有任务都完成。默认为false
。
响应代码
编辑-
404
(缺少资源) - 如果指定了
<task_id>
但未找到,则此代码指示没有与请求匹配的资源。
示例
编辑resp = client.tasks.list() print(resp) resp1 = client.tasks.list( nodes="nodeId1,nodeId2", ) print(resp1) resp2 = client.tasks.list( nodes="nodeId1,nodeId2", actions="cluster:*", ) print(resp2)
response = client.tasks.list puts response response = client.tasks.list( nodes: 'nodeId1,nodeId2' ) puts response response = client.tasks.list( nodes: 'nodeId1,nodeId2', actions: 'cluster:*' ) puts response
const response = await client.tasks.list(); console.log(response); const response1 = await client.tasks.list({ nodes: "nodeId1,nodeId2", }); console.log(response1); const response2 = await client.tasks.list({ nodes: "nodeId1,nodeId2", actions: "cluster:*", }); console.log(response2);
检索当前在集群中所有节点上运行的所有任务。 |
|
检索在节点 |
|
检索在节点 |
API 返回以下结果
{ "nodes" : { "oTUltX4IQMOUUVeiohTt8A" : { "name" : "H5dfFeA", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1:9300", "tasks" : { "oTUltX4IQMOUUVeiohTt8A:124" : { "node" : "oTUltX4IQMOUUVeiohTt8A", "id" : 124, "type" : "direct", "action" : "cluster:monitor/tasks/lists[n]", "start_time_in_millis" : 1458585884904, "running_time_in_nanos" : 47402, "cancellable" : false, "parent_task_id" : "oTUltX4IQMOUUVeiohTt8A:123" }, "oTUltX4IQMOUUVeiohTt8A:123" : { "node" : "oTUltX4IQMOUUVeiohTt8A", "id" : 123, "type" : "transport", "action" : "cluster:monitor/tasks/lists", "start_time_in_millis" : 1458585884904, "running_time_in_nanos" : 236042, "cancellable" : false } } } } }
从特定任务检索信息
编辑也可以检索特定任务的信息。以下示例检索有关任务 oTUltX4IQMOUUVeiohTt8A:124
的信息
resp = client.tasks.get( task_id="oTUltX4IQMOUUVeiohTt8A:124", ) print(resp)
response = client.tasks.get( task_id: 'oTUltX4IQMOUUVeiohTt8A:124' ) puts response
const response = await client.tasks.get({ task_id: "oTUltX4IQMOUUVeiohTt8A:124", }); console.log(response);
GET _tasks/oTUltX4IQMOUUVeiohTt8A:124
如果未找到该任务,API 将返回 404。
要检索特定任务的所有子任务
resp = client.tasks.list( parent_task_id="oTUltX4IQMOUUVeiohTt8A:123", ) print(resp)
response = client.tasks.list( parent_task_id: 'oTUltX4IQMOUUVeiohTt8A:123' ) puts response
const response = await client.tasks.list({ parent_task_id: "oTUltX4IQMOUUVeiohTt8A:123", }); console.log(response);
GET _tasks?parent_task_id=oTUltX4IQMOUUVeiohTt8A:123
如果未找到父任务,API 不会返回 404。
获取有关任务的更多信息
编辑您还可以使用 detailed
请求参数来获取有关正在运行的任务的更多信息。这有助于区分任务,但执行成本更高。例如,使用 detailed
请求参数获取所有搜索
resp = client.tasks.list( actions="*search", detailed=True, ) print(resp)
response = client.tasks.list( actions: '*search', detailed: true ) puts response
const response = await client.tasks.list({ actions: "*search", detailed: "true", }); console.log(response);
GET _tasks?actions=*search&detailed
API 返回以下结果
{ "nodes" : { "oTUltX4IQMOUUVeiohTt8A" : { "name" : "H5dfFeA", "transport_address" : "127.0.0.1:9300", "host" : "127.0.0.1", "ip" : "127.0.0.1:9300", "tasks" : { "oTUltX4IQMOUUVeiohTt8A:464" : { "node" : "oTUltX4IQMOUUVeiohTt8A", "id" : 464, "type" : "transport", "action" : "indices:data/read/search", "description" : "indices[test], types[test], search_type[QUERY_THEN_FETCH], source[{\"query\":...}]", "start_time_in_millis" : 1483478610008, "running_time_in_nanos" : 13991383, "cancellable" : true, "cancelled" : false } } } } }
新的 description
字段包含人类可读的文本,用于标识任务正在执行的特定请求,例如标识搜索任务正在执行的搜索请求(如上面的示例)。其他类型的任务具有不同的描述,例如 _reindex
,它具有源和目标,或者 _bulk
,它仅具有请求数和目标索引。许多请求将只有空描述,因为有关请求的更详细信息不容易获得,或者对于识别请求没有特别帮助。
带有 detailed
的 _tasks
请求也可能返回 status
。这是任务内部状态的报告。因此,其格式因任务而异。尽管我们试图保持特定任务的 status
在各个版本中保持一致,但这并非总是可能的,因为我们有时会更改实现。在这种情况下,我们可能会从特定请求的 status
中删除字段,因此您对状态进行的任何解析都可能在次要版本中中断。
等待完成
编辑任务 API 也可用于等待特定任务的完成。以下调用将阻塞 10 秒或直到 ID 为 oTUltX4IQMOUUVeiohTt8A:12345
的任务完成。
resp = client.tasks.get( task_id="oTUltX4IQMOUUVeiohTt8A:12345", wait_for_completion=True, timeout="10s", ) print(resp)
response = client.tasks.get( task_id: 'oTUltX4IQMOUUVeiohTt8A:12345', wait_for_completion: true, timeout: '10s' ) puts response
const response = await client.tasks.get({ task_id: "oTUltX4IQMOUUVeiohTt8A:12345", wait_for_completion: "true", timeout: "10s", }); console.log(response);
GET _tasks/oTUltX4IQMOUUVeiohTt8A:12345?wait_for_completion=true&timeout=10s
您还可以等待某些操作类型的所有任务完成。此命令将等待所有 reindex
任务完成
resp = client.tasks.list( actions="*reindex", wait_for_completion=True, timeout="10s", ) print(resp)
response = client.tasks.list( actions: '*reindex', wait_for_completion: true, timeout: '10s' ) puts response
const response = await client.tasks.list({ actions: "*reindex", wait_for_completion: "true", timeout: "10s", }); console.log(response);
GET _tasks?actions=*reindex&wait_for_completion=true&timeout=10s
任务取消
编辑如果长时间运行的任务支持取消,则可以使用取消任务 API 取消它。以下示例取消任务 oTUltX4IQMOUUVeiohTt8A:12345
resp = client.tasks.cancel( task_id="oTUltX4IQMOUUVeiohTt8A:12345", ) print(resp)
response = client.tasks.cancel( task_id: 'oTUltX4IQMOUUVeiohTt8A:12345' ) puts response
const response = await client.tasks.cancel({ task_id: "oTUltX4IQMOUUVeiohTt8A:12345", }); console.log(response);
POST _tasks/oTUltX4IQMOUUVeiohTt8A:12345/_cancel
任务取消命令支持与列出任务命令相同的任务选择参数,因此可以同时取消多个任务。例如,以下命令将取消在节点 nodeId1
和 nodeId2
上运行的所有 reindex 任务。
resp = client.tasks.cancel( nodes="nodeId1,nodeId2", actions="*reindex", ) print(resp)
response = client.tasks.cancel( nodes: 'nodeId1,nodeId2', actions: '*reindex' ) puts response
const response = await client.tasks.cancel({ nodes: "nodeId1,nodeId2", actions: "*reindex", }); console.log(response);
POST _tasks/_cancel?nodes=nodeId1,nodeId2&actions=*reindex
任务在取消后可能会继续运行一段时间,因为它可能无法立即安全地停止其当前活动,或者因为 Elasticsearch 必须先完成其他任务的工作,然后才能处理取消。列出任务 API 将继续列出这些已取消的任务,直到它们完成。列出任务 API 响应中的 cancelled
标志指示已处理取消命令,并且任务将尽快停止。要解决为什么已取消的任务没有及时完成的问题,请使用带有 ?detailed
参数的列出任务 API 来识别系统正在运行的其他任务,并使用 节点热线程 API 来获取有关系统正在执行的工作的详细信息,而不是完成已取消的任务。
任务分组
编辑任务 API 命令返回的任务列表可以使用 group_by
参数按节点(默认)或按父任务分组。以下命令会将分组更改为父任务
resp = client.tasks.list( group_by="parents", ) print(resp)
response = client.tasks.list( group_by: 'parents' ) puts response
const response = await client.tasks.list({ group_by: "parents", }); console.log(response);
GET _tasks?group_by=parents
可以通过指定 none
作为 group_by
参数来禁用分组
resp = client.tasks.list( group_by="none", ) print(resp)
response = client.tasks.list( group_by: 'none' ) puts response
const response = await client.tasks.list({ group_by: "none", }); console.log(response);
GET _tasks?group_by=none
识别正在运行的任务
编辑当在 HTTP 请求标头上提供 X-Opaque-Id
标头时,它将在响应中以及任务信息中的 headers
字段中作为标头返回。这允许跟踪某些调用,或将某些任务与启动它们的客户端关联起来
curl -i -H "X-Opaque-Id: 123456" "https://127.0.0.1:9200/_tasks?group_by=parents"
API 返回以下结果
HTTP/1.1 200 OK X-Opaque-Id: 123456 content-type: application/json; charset=UTF-8 content-length: 831 { "tasks" : { "u5lcZHqcQhu-rUoFaqDphA:45" : { "node" : "u5lcZHqcQhu-rUoFaqDphA", "id" : 45, "type" : "transport", "action" : "cluster:monitor/tasks/lists", "start_time_in_millis" : 1513823752749, "running_time_in_nanos" : 293139, "cancellable" : false, "headers" : { "X-Opaque-Id" : "123456" }, "children" : [ { "node" : "u5lcZHqcQhu-rUoFaqDphA", "id" : 46, "type" : "direct", "action" : "cluster:monitor/tasks/lists[n]", "start_time_in_millis" : 1513823752750, "running_time_in_nanos" : 92133, "cancellable" : false, "parent_task_id" : "u5lcZHqcQhu-rUoFaqDphA:45", "headers" : { "X-Opaque-Id" : "123456" } } ] } } }