Spring Boot 如何在设置from和size字段后获取ES查询的总命中数

c2e8gylq  于 2022-11-05  发布在  Spring
关注(0)|答案(3)|浏览(251)
searchSourceBuilder.query(query).sort(sb).from(fromField).size(sizeField);
searchRequest.indices(elasticsearchUserIndex).source(searchSourceBuilder);
SearchResponse searchResponse = elasticSearchConfig.client().search(searchRequest, RequestOptions.DEFAULT);
SearchHit[] hits = searchResponse.getHits().getHits();
Long totalCount = searchResponse.getHits().getTotalHits();
List<Map<String, Object>> list = new ArrayList<>();
for (SearchHit value: hits) {
    list.add(value.getSourceAsMap());
    }

这就是我正在使用的代码。一旦我设置了from和size参数,我就会根据设置的size得到点击数。但是,要在响应中加上总的页面计数,我需要该查询的总点击数。
How to get total result count when setFrom is used in elasticsearch QueryBuilders?
尝试使用该线程中的解决方案,但我得到的总命中数为0,尽管我根据大小得到命中数。totalCount返回0

lf3rwulv

lf3rwulv1#

您需要将track_total_hits设置为true,这样您就可以获得响应的总命中数。

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery()).from(0).size(10);
searchSourceBuilder.trackTotalHits(true);
searchRequest.source(searchSourceBuilder);
Long totalCount = searchResponse.getHits().getTotalHits();
mi7gmzs6

mi7gmzs62#

把我的ES版本改成了7.3.0,我的高级客户端也升级到了7.3.0。
参照:https://discuss.elastic.co/t/issue-with-high-level-rest-client-api/195853

sshcrbum

sshcrbum3#

下面是如何获取总计数
返回一个新的值;
此错误在idea java中弹出:无法取消引用long

相关问题