我需要进行平均聚合,但我想过滤一些值。在下面的示例中,我希望筛选长度=100,因此我希望对所有文档的长度(文档#1和文档#2)和宽度进行平均化。所以我希望看到长度平均值为9,宽度平均值为5。我应该怎么做?
文档示例:
["id": 1, "length": 10, "width":8]
["id": 2, "length": 8, "width":2]
["id": 3, "length": 100, "width":5]
在其他情况下,长度可能不存在,这种情况如何?
["id": 1, "length": 10, "width":8]
["id": 2, "length": 8, "width":2]
["id": 3, "width":5]
termAggregation.subAggregation(AggregationBuilders.avg("length").field("length"))
.subAggregation(AggregationBuilders.avg("width").field("width"));
1条答案
按热度按时间o8x7eapl1#
您的聚合查询将如下所示,用于从聚合中排除
100
。您需要使用filter
聚合并在该avg
内用子聚合。Java代码
响应