最近在使用ES的async search的功能时遇到一个问题。
通过elasticsearch的_async_search提交了一个异步的查询请求(仅查询不包含聚合,查询使用querystring),但是通过返回的id获取结果时只有在异步检索完成时才会返回hits的内容。
如果是聚合查询则通过id获取结果时,即使异步检索没有完成时也会有中间统计的结果返回。
问题:在只有查询没有聚合时,如何在异步查询没有结束时获取到hits的内容
curl -XPOST ip:port/*/_async_search
{
"from":0,
"size":10,
"query":{
"query_string":{
"query":"aaa"
}
}
}
获取结果:
curl ip:port/_async_search/<id>
获取结果接口中的total value显示已经有名中的数据,但是hits里面却是空的,是我的使用方式有问题吗?还是ES本身不支持?
谢谢各位!!!
ES版本:7.8.0
通过elasticsearch的_async_search提交了一个异步的查询请求(仅查询不包含聚合,查询使用querystring),但是通过返回的id获取结果时只有在异步检索完成时才会返回hits的内容。
如果是聚合查询则通过id获取结果时,即使异步检索没有完成时也会有中间统计的结果返回。
问题:在只有查询没有聚合时,如何在异步查询没有结束时获取到hits的内容
curl -XPOST ip:port/*/_async_search
{
"from":0,
"size":10,
"query":{
"query_string":{
"query":"aaa"
}
}
}
获取结果:
curl ip:port/_async_search/<id>
获取结果接口中的total value显示已经有名中的数据,但是hits里面却是空的,是我的使用方式有问题吗?还是ES本身不支持?
谢谢各位!!!
ES版本:7.8.0
1 个回复
jizhidecheng
赞同来自:
查询请求发起后,每个分片返回各自优先队列中所有文档的 ID 和排序值给协调节点,当搜索完成时,才会去各个分片取回_source的信息(取回阶段)
不知道我理解的对不对