高峰只对攀登它而不是仰望它的人来说才有真正意义。

关于ES异步搜索 async search问题

Elasticsearch | 作者 jizhidecheng | 发布于2021年01月06日 | 阅读数:1934

最近在使用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"
             } 
       }
}

Screenshot_20210106-195031.jpg

 
获取结果:
curl ip:port/_async_search/<id>

Screenshot_20210106-195014.jpg

获取结果接口中的total value显示已经有名中的数据,但是hits里面却是空的,是我的使用方式有问题吗?还是ES本身不支持?
谢谢各位!!!
ES版本:7.8.0
 
 
 
 
已邀请:

jizhidecheng

赞同来自:

看了下搜索原理好像明白了,对于搜索来说当最终计算结果没有完成时不能返回_source的内容
查询请求发起后,每个分片返回各自优先队列中所有文档的 ID 和排序值给协调节点,当搜索完成时,才会去各个分片取回_source的信息(取回阶段)
不知道我理解的对不对

要回复问题请先登录注册