Elasticsearch setsize()无需使用滚动API即可获取所有记录

时间:2018-10-01 13:51:31

标签: elasticsearch elastic-stack elasticsearch-5 kibana-5

我是ElasticSearch的新手,我的情况是这样的,其中有一个包含约100个文档的索引。我正在使用以下代码段来检索这些代码

ListenableActionFuture f = esClient.prepareSearch(index)                 .setTypes(类型)                 .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)                 .setQuery(multiMatchQuery)                 .execute();

我想一次获取所有文档而不使用滚动条。我知道索引不会有那么多记录。如果我指定

ListenableActionFuture f = esClient.prepareSearch(index)                 .setTypes(类型)                 .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)                 .setQuery(multiMatchQuery)                 .setSize(100)                 。执行(); 行为不一致。每次获取的记录数量各不相同,有时是34个文档,有时是21个,等等。

但是,如果我不指定大小,则总是获取10。我正在使用Elasticsearch 5.6.3。

我尝试了几种解决方案,例如使用以下无搜索类型的方法,但是没有运气

ListenableActionFuture f = esClient.prepareSearch(index)                 .setTypes(类型)                 .setQuery(multiMatchQuery)                 .setSize(hitcount)                 .execute();

我需要查询以一次性获取所有记录。当我尝试打印搜索响应时,我发现总匹配数如下所示

hits”:{     “总计”:25,     “ max_score”:0.18232156,     “点击数”:[       {         ....         }       }} 应该是100。同样,如果我执行相同的代码,总的点击率也会有所不同。

我的索引有5个分片

我想知道是什么使我的总点击次数经常不一致。

0 个答案:

没有答案