如何使用聚合获取包含特定字段的总文档数?

时间:2016-01-07 13:22:31

标签: elasticsearch

我正在从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();
 }

有什么方法可以从术语聚合中获得该字段的总计数。 我不想激发存在过滤查询。我想要单个查询结果。

1 个答案:

答案 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");