MST

星途 面试题库

面试题:ElasticSearch带权重均值聚合在复杂场景下的应用

假设你有一个电商产品数据索引,每个产品有价格、销量、评价星级等字段。现在要求通过带权重的均值聚合,计算出综合考虑销量(权重高)和评价星级(权重低)后的产品平均得分,以便进行产品排序,写出对应的ElasticSearch查询DSL语句,并解释每个部分的作用。
26.4万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
{
    "aggs": {
        "weighted_avg_score": {
            "weighted_avg": {
                "value": {
                    "script": {
                        "source": "doc['销量'].value * 0.8 + doc['评价星级'].value * 0.2",
                        "lang": "painless"
                    }
                },
                "weight": {
                    "script": {
                        "source": "doc['销量'].value",
                        "lang": "painless"
                    }
                }
            }
        }
    }
}
  • aggs:Elasticsearch中用于聚合操作的关键字。
  • weighted_avg_score:自定义的聚合名称,可以根据实际情况修改,代表计算出的带权重平均得分的聚合结果名称。
  • weighted_avg:表示进行带权重的平均聚合操作。
  • value:用于定义计算加权平均值的数值部分,这里通过script脚本计算,销量权重设为0.8,评价星级权重设为0.2 ,使用painless脚本语言从文档中获取销量评价星级字段值进行计算。
  • weight:用于定义权重部分,这里同样通过script脚本从文档中获取销量字段值作为权重,使用painless脚本语言。