MST

星途 面试题库

面试题:ElasticSearch中带权重的均值聚合实现原理

在ElasticSearch中,简述带权重的均值聚合是如何计算的,以及其涉及到的核心参数有哪些,并举例说明如何在查询语句中实现带权重的均值聚合。
49.2万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

带权重的均值聚合计算方式

带权重的均值聚合会根据每个文档对应的权重值,对某个数值字段进行加权平均计算。即,将每个文档的字段值乘以其对应的权重,然后将这些乘积累加起来,再除以所有文档权重的总和,以此得到加权平均值。

核心参数

  1. field:指定要进行聚合计算的数值型字段。
  2. 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表示我们不关心返回的文档,只关注聚合结果。