要不要也来分享分享一下啊

elasticsearch如何获取指定的msearch的taskId

Elasticsearch | 作者 kender | 发布于2020年10月22日 | 阅读数:3095

例如,我执行一个msearch的查询语句
GET .kibana-event*/_msearch
{ }
{"query" : {"match" : { "message": "this is a test"}}}
{"index": ".kibana-event*"}
{"query" : {"match_all" : {}}}
假如第一个msearch语句会执行非常久的时间,在它处于执行过程中的时候,我继续执行第二个msearch的查询语句
GET .kibana-event*/_msearch
{}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{"index" : ".kibana-event*", "search_type" : "dfs_query_then_fetch"}
现在因为第一个msearch执行太久时间,我希望能够取消第一个msearch语句的执行,这个该如何实现?
我第一个想到的是通过taskId来取消任务,首先我否定了通过
GET _tasks?actions=*msearch&detailed
通配符这种方式获取msearch的taskId,因为这样不能区分哪个task是第一个msearch的task。
我在想是否有某种方法,当执行第一个msearch执行的时候,elasticsearch就返回它的taskId,当第一个任务执行过久,我就可以通过这个taskId进行任务取消?
或者还有什其他的方法实现这个功能吗?
感谢大佬们的解答。
 
 
 
 
 
 
 
 
已邀请:

JiangJibo - 喊我雷锋

赞同来自:

Elasticsearch 7.7 提供了异步搜索的能力,你可以看看

Charele - Cisco4321

赞同来自:

Peifei.png

 
这个东西是有level的,紫色的是代表一个msearch的总task,
两个红色的是他的子task(它们分别代表msearch中的一个search)
两个儿子分别有1个和3个儿子。
(看后面的parent id)

要回复问题请先登录注册