MST
星途 面试题库

面试题:ElasticSearch中嵌套聚合的基本使用场景

在实际业务场景中,哪些情况会用到ElasticSearch的嵌套聚合?请举例说明,并阐述如何在ElasticSearch中实现简单的嵌套聚合,例如对电商商品按类别聚合后,再对每个类别下的品牌进行聚合。
29.0万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试

1. 适用场景举例

  • 电商产品分类与品牌统计:电商平台有大量商品,需要先按商品类别(如服装、电子产品等)聚合,再在每个类别下对品牌(如耐克、苹果等)聚合,以便了解每个类别下不同品牌的产品分布情况。
  • 文档标签分类与子标签统计:在文档管理系统中,文档可能有一级标签(如技术、生活等),每个一级标签下又有二级子标签(如技术下的编程、数据库;生活下的美食、旅游等),通过嵌套聚合可以统计不同一级标签下二级子标签的文档数量。

2. ElasticSearch实现电商商品按类别聚合后再按品牌聚合的示例

假设商品索引为products,包含category(类别)和brand(品牌)字段。

使用Elasticsearch的DSL(Domain Specific Language)进行查询,示例如下:

{
    "size": 0,
    "aggs": {
        "categories": {
            "terms": {
                "field": "category"
            },
            "aggs": {
                "brands": {
                    "terms": {
                        "field": "brand"
                    }
                }
            }
        }
    }
}

解释:

  • size: 0表示不返回具体的文档,只关注聚合结果。
  • aggs是聚合部分。
  • categories是外层聚合,使用terms聚合按category字段进行分组。
  • categories聚合内部,又定义了brands聚合,同样使用terms聚合按brand字段在每个类别分组内进行分组。