我在kibana中执行
获取到结果
我现在想取消其中的一个指定的任务
结果如图,直接显示的是没有找到
通过父任务id查找其子任务,也是相同的问题,明明他有子任务的,还是没有返回值
问题:为什么会出现通过task id取消任务不成功,以及为什么根据父任务id不能查到子任务?
非常感谢各位解题的大佬们
GET /_cat/tasks?v
获取到结果
我现在想取消其中的一个指定的任务
#取消指定任务id的任务
POST _tasks/NpegKuCBSN6yxczJFwsbJQ:29635/_cance
结果如图,直接显示的是没有找到
通过父任务id查找其子任务,也是相同的问题,明明他有子任务的,还是没有返回值
GET /_tasks?parent_task_id=YQlkIfqMRm2tETj6RRKKCw:43048
结果没有返回值{
"nodes" : { }
}
问题:为什么会出现通过task id取消任务不成功,以及为什么根据父任务id不能查到子任务?
非常感谢各位解题的大佬们
2 个回复
Charele - Cisco4321
赞同来自: juin 、kender
ES实际上是执行了一个TransportListTasksAction这个动作(TransportAction的子类),
你看到的那个3任务就是因为你GET /_cat/tasks?v而产生的。
它执行很快,立即结束了,所以你跟本不可能再下次看到相同的task。
当你再执行同的,看到就是不同的任务了。
(所以你想cancel的时候会报错,因为它跟本就不存在)
再来看看task_id
NpegKuCBSN6yxczJFwsbJQ:29635
前面的后面的29635就是节点的任务id,它是递增的
如果你感兴趣,可以看下TaskManager类里面产生task的实现方法:
Task task = request.createTask(taskIdGenerator.incrementAndGet(), type, action, request.getParentTask(), headers);
taskIdGenerator.incrementAndGet()
这是一个全局的计数器,每个task都会有一个递增的id
Charele - Cisco4321
赞同来自:
你就可以看到这个indices:data/write/bulk类型的任务了,如果它执行时间稍长,你就可以cancel