我正在从ElasticSearch 1.7迁移到2.0。以前在计算Term Facets时我也得到了总计数。这将告诉该字段存在多少个文档。这就是我之前的做法。
TermsFacet termsFacet = (TermsFacet) facet;
termsFacet.getTotalCount();
它也适用于Multivalue领域。
现在,在Term Aggregation的当前版本中,我们没有任何总计数。我在聚合桶中获得了DocCount。但这不适用于多值领域。
Terms termsAggr = (Terms) aggr;
for (Terms.Bucket bucket : termsAggr.getBuckets()) {
String bucketKey = bucket.getKey();
totalCount += bucket.getDocCount();
}
有什么方法可以从术语聚合中获得该字段的总计数。 我不想激发存在过滤查询。我想要单个查询结果。
答案 0 :(得分:1)
我会使用exists查询: https://www.elastic.co/guide/en/elasticsearch/reference/2.x/query-dsl-exists-query.html
例如,要查找包含可以使用的字段用户的文档:
{
"exists" : { "field" : "user" }
}
当然还有一个java API: https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-term-level-queries.html#java-query-dsl-exists-query
QueryBuilder qb = existsQuery("name");