EasyES count聚合无效?

在Elasticsearch中,如果你尝试在一个count聚合中使用count聚合,你会遇到一个错误,提示count聚合必须是子聚合。这是因为count聚合是一个简单的计数聚合,它不能包含任何子聚合。

如果你需要对一个聚合结果进行计数,你应该使用另一种聚合类型,比如terms聚合,并在其内部进行count。以下是一个使用terms聚合的例子,它包含了一个子count聚合:

{
  "aggs": {
    "my_terms_agg": {
      "terms": {
        "field": "some_field"
      },
      "aggs": {
        "my_count_agg": {
          "value_count": {
            "field": "some_other_field"
          }
        }
      }
    }
  }
}

在这个例子中,my_terms_agg是一个terms聚合,它会按照some_field字段的值进行分组。每组内部,我们进行了一个value_count聚合(作为子聚合),它计算每组中some_other_field字段的非空值数量。这样,我们得到了分组后每组内的文档数量。

EasyEs 同理,这里必须作为 某个聚合的子聚合,例如:

//filter聚合
TermQueryBuilder orderNumFilter = QueryBuilders.termQuery("orderStatus", "settled");
        AggregationBuilder orderNumAggr = AggregationBuilders.filter("orderNum", orderNumFilter)
                .subAggregation(AggregationBuilders.count("orderNum").field("orderStatus"));
//terms 聚合
 TermsAggregationBuilder awardIdAggregation = AggregationBuilders.terms("award_stats")
                .field("awardId").subAggregation(AggregationBuilders.count("award_count").field("awardId"));
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值