我是ElasticSearch的新手,我的场景是这样的,有一个包含大约100个文档的索引 . 我正在使用以下代码片段来检索它们

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

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

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

但是,如果我不指定大小,它总是提取10 . 我正在使用elasticsearch 5.6.3 .

我尝试了一些解决方案,如下面没有搜索类型的使用,但没有运气

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

我需要一个查询来一次获取所有记录 . 当我尝试打印searchresponse时,我发现总点击数不正确,如下所示

命中“:{”total“:25,”max_score“:0.18232156,”命中“:[}}它应该是100.再次,如果我执行相同的代码,我会得到不同的总命中 .

我的索引有5个分片

我想知道是什么让我经常得到不一致的总命中率 .