当在ElasticSearchQueryBuilders中使用setfrom时,如何获得总结果计数?

mwyxok5s  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(4)|浏览(301)

我正在使用ElasticSearchQueryBuilders创建分页。我使用setfrom获得分页的有限结果。但我需要总的结果计数,以创建总的页面链接分页根据结果。在setfrom应用于查询之前,如何获取总计数?或者我必须再次编写相同的查询,以获得不带setfrom和size的总计数?
这是我的问题

BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : brands) {
    query.must(QueryBuilders.matchQuery("brand", key));
}

// search term
query.must(QueryBuilders.queryStringQuery(pSearchTerm + "*")
        .lenient(true).field("name"));

// price range
query.filter(QueryBuilders.rangeQuery("unit_price").from(min)
        .to(max));

SearchResponse searchresponse = client.prepareSearch("product")
        .setTypes("product").setQuery(query).setFrom(from).setSize(20)
        .setExplain(true).execute().actionGet();

SearchHit[] results = searchresponse.getHits().getHits();
9wbgstp7

9wbgstp71#

searchhits对象提供有关所有点击的全局信息。
因此,您需要以下内容来获取总计数:

long totalCount = searchResponse.getHits().getTotalHits();

您可以查看文档以了解此类其他需求。

ffscu2ro

ffscu2ro2#

不,您不必再次编写查询。只是使用 searchResponse.getHits().getTotalHits()

jgzswidk

jgzswidk3#

你要找的号码是 hits.total 您可以从:

long total = searchresponse.getHits().getTotalHits();
txu3uszq

txu3uszq4#

您可能需要再执行一个查询才能获得总点击数。看看:使用elasticsearch计算文档数

相关问题