任务管理

警告 任务管理API是新功能,仍应被视为测试版功能。 今后的API可能以不向后兼容的方式更改

当前任务信息

任务管理API允许检索有关当前在集群中的一个或多个节点上执行的任务的信息。

GET _tasks ①
GET _tasks?nodes=nodeId1,nodeId2 ②
GET _tasks?nodes=nodeId1,nodeId2&actions=cluster:* ③

① 检索当前在集群中的所有节点上运行的所有任务。

② 检索节点nodeId1和nodeId2上运行的所有任务。有关如何选择单个节点的详细信息,请参阅指定节点

③ 检索在节点nodeId1和nodeId2上运行的所有与集群相关的任务。

结果将类似于以下内容:

{
  "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

GET _tasks/oTUltX4IQMOUUVeiohTt8A:124

如果未找到任务,则API返回404。

要检索特定任务的所有子项:

GET _tasks?parent_task_id=oTUltX4IQMOUUVeiohTt8A:123

如果未找到父级,则API不会返回404。

您还可以使用detailed请求参数来获取有关正在运行的任务的更多信息。这对于从一个任务告知另一个任务很有用,但执行成本更高。例如,使用详细的请求参数获取所有搜索:

GET _tasks?actions=*search&detailed

结果可能如下所示:

{
  "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
        }
      }
    }
  }
}

新的description字段包含人类易读文本,其标识任务正在执行的特定请求,例如识别由搜索任务执行的搜索请求,如上面的示例。其他类型的任务有不同的描述,如_reinde有搜索和目的地,或_bulk只有请求数和目的地索引。许多请求只有空描述,因为有关请求的更详细信息不容易获得或在识别请求时特别有用。

重要 具有详细信息的_tasks请求也可能返回status。这是任务内部状态的报告。因此,其格式因任务而异。虽然我们尝试保持特定任务的状态在版本之间保持一致,但这并不总是可行的,因为我们有时会更改实现。在这种情况下,我们可能会从特定请求的状态中删除字段,因此您对status执行的任何解析都可能会在次要版本中中断。

任务API还可用于等待特定任务的完成。以下调用将阻止10秒或直到id为oTUltX4IQMOUUVeiohTt8A:12345的任务完成。

GET _tasks/oTUltX4IQMOUUVeiohTt8A:12345?wait_for_completion=true&timeout=10s

您还可以等待某些操作类型的所有任务完成。此命令将等待所有reindex任务完成:

GET _tasks?actions=*reindex&wait_for_completion=true&timeout=10s

还可以使用list tasks命令的_cat版本列出任务,该命令接受与标准列表任务命令相同的参数。

GET _cat/tasks
GET _cat/tasks?detailed

任务取消

如果要将长时间运行的任务取消,则可以使用取消任务API取消它。以下示例取消任务oTUltX4IQMOUUVeiohTt8A:12345:

POST _tasks/oTUltX4IQMOUUVeiohTt8A:12345/_cancel

任务取消命令支持与list tasks命令相同的任务选择参数,因此可以同时取消多个任务。例如,以下命令将取消在节点nodeId1nodeId2上运行的所有reindex任务。

POST _tasks/_cancel?nodes=nodeId1,nodeId2&actions=*reindex

任务分组

任务API命令返回的任务列表可以按节点(默认)分组,也可以使用group_by参数按父任务分组。以下命令将分组更改为父任务:

GET _tasks?group_by=parents

可以通过将group_by参数指定为none来禁用分组:

GET _tasks?group_by=none

识别运行中任务

当在HTTP请求标头上提供时,X-Opaque-Id标头将作为响应中的标头,以及任务信息中的标头字段返回。这允许跟踪某些调用,或将某些任务与启动它们的客户端关联:

curl -i -H "X-Opaque-Id: 123456" "http://localhost:9200/_tasks?group_by=parents"

结果将类似于以下内容:

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" ③
          }
        }
      ]
    }
  }
}

① id作为响应头的一部分

② REST请求启动的任务的id

③ REST请求启动的任务的子任务

results matching ""

    No results matching ""