MST

星途 面试题库

面试题:ElasticSearch百分比排名聚合中的桶排序及复杂场景应用

假设你有一个包含商品销售数据的ElasticSearch索引,每个文档记录了商品ID、销售量和销售额等信息。现在要求使用百分比排名聚合,按照销售额对商品进行排名,并且在聚合结果中按照销售量降序排列桶。请给出完整的DSL查询语句,并解释每一部分的作用。
34.9万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
{
    "size": 0,
    "aggs": {
        "sales_percentage_rank": {
            "percentile_ranks": {
                "field": "sales_amount",
                "values": [
                    1
                ]
            }
        },
        "sales_by_quantity": {
            "terms": {
                "field": "sales_quantity",
                "order": {
                    "_count": "desc"
                }
            }
        }
    }
}
  • size: 0:表示不返回命中的文档,只返回聚合结果,这样可以减少不必要的数据传输。
  • aggs:聚合部分,用于定义各种聚合操作。
    • sales_percentage_rank:定义一个名为 sales_percentage_rank 的聚合。
      • percentile_ranks:使用百分比排名聚合类型。
      • field: "sales_amount":指定要基于销售额字段进行百分比排名。
      • values: [1]:这里只计算一个值(1)的百分比排名,实际应用中可以根据需要调整。
    • sales_by_quantity:定义一个名为 sales_by_quantity 的聚合。
      • terms:使用词条聚合类型。
      • field: "sales_quantity":基于销售量字段进行聚合。
      • order: {"_count": "desc"}:按照每个桶中文档数量(即销售量)降序排列桶。