面试题答案
一键面试带权重的均值聚合计算方式
带权重的均值聚合会根据每个文档对应的权重值,对某个数值字段进行加权平均计算。即,将每个文档的字段值乘以其对应的权重,然后将这些乘积累加起来,再除以所有文档权重的总和,以此得到加权平均值。
核心参数
field
:指定要进行聚合计算的数值型字段。weight_field
:指定用于加权的权重字段。该字段必须也是数值型的。
查询语句示例
假设我们有一个索引products
,其中每个文档代表一个产品,有price
字段表示价格,popularity
字段表示产品的受欢迎程度(作为权重)。以下是在Elasticsearch的查询语句中实现带权重均值聚合的示例:
{
"size": 0,
"aggs": {
"weighted_avg_price": {
"weighted_avg": {
"value": {
"field": "price"
},
"weight": {
"field": "popularity"
}
}
}
}
}
上述查询通过weighted_avg
聚合,计算products
索引中产品价格基于受欢迎程度权重的加权平均价格。size: 0
表示我们不关心返回的文档,只关注聚合结果。