MST
星途 面试题库

面试题:ElasticSearch中百分比排名聚合的基本使用场景

请阐述在哪些业务场景下,你会优先考虑使用ElasticSearch的百分比排名聚合功能?并简单说明如何通过DSL语句实现一个基础的百分比排名聚合。
36.4万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

适用业务场景

  1. 电商产品销量排名:在电商平台中,需要展示某个商品在同类别商品中的销量排名占比,帮助用户了解该商品销量的相对位置,以便做出购买决策。例如,用户搜索“手机”,希望知道某款手机的销量在所有手机产品中的百分比排名,判断其受欢迎程度。
  2. 学生成绩排名:教育场景下,老师或学生想了解某个学生的成绩在班级或年级中的排名占比。比如,在一次数学考试后,学生想知道自己的数学成绩在全班同学中的百分比排名,了解自己的学习水平。
  3. 运动员赛事成绩排名:在体育赛事中,运动员或观众想要了解某位运动员的成绩在所有参赛选手中的排名占比情况。例如,在田径比赛中,运动员想知道自己的百米成绩在所有参赛运动员中的百分比排名。

DSL 语句实现基础百分比排名聚合

假设我们有一个索引products,包含商品的销量字段sales_volume,以下是通过 DSL 语句实现基础百分比排名聚合的示例:

{
    "aggs": {
        "sales_percentage_rank": {
            "percentile_ranks": {
                "field": "sales_volume"
            }
        }
    }
}

上述 DSL 语句中,在aggs(聚合)部分定义了一个名为sales_percentage_rank的聚合,使用percentile_ranks类型,指定要基于的字段为sales_volume,这样就可以对商品的销量进行百分比排名聚合。