[英]How to get total result count when setFrom is used in elasticsearch QueryBuilders?
我正在使用 elasticsearch QueryBuilders 创建分页。 我正在使用 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();
您要查找的数字是hits.total
,您可以从中获得:
long total = searchresponse.getHits().getTotalHits();
不,您不必再次编写查询。 只需使用
searchResponse.getHits().getTotalHits()
SearchHits 对象提供有关所有命中的全局信息。
因此,您需要以下内容来获得总数:
long totalCount = searchResponse.getHits().getTotalHits();
您可以查看文档以了解此类其他需求。
您可能需要再执行一次查询才能获得总点击次数。 看一看: Counting number of documents using Elasticsearch
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.