[译文] Elasticsearch的任务管理api

心血来潮,又翻译了elasticsearch的一篇文章。 今才发现elasticsearch也有了任务管理api。这任务管理可以理解为mysql的show processlist; kill %task_id 。同样elasticsearch也有查询、取消任务的功能。  有了任务管理api,我们对于那种长时间的任务可以更好控制了。 


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。http://xiaorui.cc/?p=3089

任务api会从一个节点或集群中所有节点获取任务列表及状态.

GET /_tasks 
GET /_tasks?nodes=nodeId1,nodeId2 
GET /_tasks?nodes=nodeId1,nodeId2&actions=cluster:* 


返回的结果是这么个样式:

{
  "nodes" : {
    "oTUltX4IQMOUUVeiohTt8A" : {
      "name" : "Tamara Rahn",
      "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,
          "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
        }
      }
    }
  }
}

当我们得知某个elasticsearch的任务id时候,可以直接调用下面的api查询. 

GET /_tasks/taskId1
GET /_tasks?parent_task_id=parentTaskId1

你也可以指定某个任务的状态。你可以一直等待该任务完成,或者满足超时的条件.

GET /_tasks/tidxiaorui.cctid:12345?wait_for_completion=true&timeout=10s

如果一个任务长时间没有完成, 我们可以强制取消暂停某个任务.

POST /_tasks/taskId1/_cancel

任务取消命令支持同一任务选择参数作为列表任务的命令,因此多任务可以同时被取消。例如,下面的命令将取消所有重建任务的节点上nodeid1和nodeid2运行。

我们可以同时取消多个任务,例如,下面的命令可以取消在节点node1,node2 . 

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

虽然Elasticsearch在2.3中支持了任务管理,但elasticsearch python库还未加入该功能,当然你可以用requests自己实现.  

END.


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注