聚合入门
terms、date_histogram、metrics。
35 分钟
聚合入门
Aggregation 在检索结果集上做统计分析:分桶(bucket)与指标(metric)。类似 SQL GROUP BY + COUNT/AVG,但面向搜索上下文,可与 query 同请求返回。
学习目标
- 使用
terms、date_histogram、metric 聚合 - 理解 bucket 与 metric 嵌套
- 对照 MySQL
GROUP BY理解适用边界
核心内容
terms 分桶
curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
"size": 0,
"aggs": {
"by_category": {
"terms": { "field": "category", "size": 10 }
}
}
}'
size: 0 只返回聚合,不返回 hit 文档——报表场景常用。
嵌套:分类 + 平均课时数
curl -s -X POST "localhost:9200/tracks/_search" -H "Content-Type: application/json" -d '
{
"size": 0,
"aggs": {
"by_category": {
"terms": { "field": "category" },
"aggs": {
"avg_lesson_count": { "avg": { "field": "lessonCount" } }
}
}
}
}'
date_histogram 按 updatedAt 看「每月上新 track 数」。精确运营报表以 MySQL / postgresql-essentials 为准;搜索页 facet 用 ES terms agg(es-kibana 可视化)。同步完整性见 es-sync。
练习
- terms 统计各
level的 track 数量 - 嵌套 agg:每
category的 max/minlessonCount - 与 MySQL 对同一
cf_track跑 GROUP BY,对比结果
小结
terms 分桶、metric 算数、date_histogram 看趋势;搜索页 facet 是 ES 强项。 下一课 Spring Data ES。
加载本节练习…