我正在使用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();
答案 0 :(得分:3)
您要查找的电话号码是cust_id
,您可以从以下号码获得该电话号码:
if (reader.Read())
{
byte[] data = (Byte[])reader["P1"];
using (MemoryStream mStream = new MemoryStream(data))
{
Bitmap bm = new Bitmap(mStream);
pictureBox1.Image = bm;
}
}
答案 1 :(得分:2)
否,您不必再次编写查询。只需使用
hits.total
答案 2 :(得分:2)
SearchHits对象提供有关所有匹配的全局信息。
因此,您需要执行以下操作来获得总数:
db.lawcases.find().snapshot().forEach(
function (elem) {
db.lawcases.update(
{
_id: elem._id
},
{
$set: {
name: elem.firstname + ' ' + elem.lastname
}
}
);
}
);
您可以查看documentation来满足其他需求。
答案 3 :(得分:1)
您可能必须再执行一次查询才能获得总点击数。看一下: Counting number of documents using Elasticsearch