全书目录

第二十三篇:Elasticsearch 完全指南 —— 全城检索雷达宇宙

第十章:aggregations 是什么 —— 不是只给结果列表,还要给你城市统计大屏

1 分钟 367 字 第 426 / 962 个阅读单元

如果说搜索结果列表是“找到哪些店”,那么 aggregations 更像:

在你搜索的同时,把整座城市的统计面板也亮出来。

常见的业务体验是:

  • 搜索 “headphones”
  • 左边同时显示“品牌分布”
  • 再显示“价格区间”
  • 再显示“平均价格”
  • 再显示“最近上新趋势”

这就是聚合的价值。

最基础的三个心智:

  • bucket aggregation:分桶,像按品牌、分类、日期区间分组
  • metric aggregation:算指标,像平均价、最大值、总和
  • pipeline aggregation:基于已有聚合结果再计算

最常见的基础写法:

http
GET /city_products/_search
{
  "size": 0,
  "query": {
    "term": {
      "category": "audio"
    }
  },
  "aggs": {
    "by_brand": {
      "terms": {
        "field": "brand"
      }
    },
    "avg_price": {
      "avg": {
        "field": "price"
      }
    }
  }
}

这里的思路是:

text
先限定一个搜索范围
  │
  ├── 结果列表可以不要(size: 0)
  └── 只看统计面板
      ├── 每个品牌有多少文档
      └── 这些文档平均价格是多少

这正是商品搜索、日志分析、内容检索里非常常见的能力。

要特别记住:

聚合不是全文相关性排序的副产品,它是 Elasticsearch 作为“搜索 + 分析中枢”的另一半主战场。