Elasticsearch核心技术与实战学习笔记 47 | 作用范围与排序
一 序
本文属于极客时间Elasticsearch核心技术与实战学习笔记系列。
二 聚合的作用范围
-
ES 聚合分析的默认作用范围是 query 的查询结果集
-
同时 ES 还支持以下方式改变聚合的作用范围
-
Filter
-
Post_Filter
-
Global
-
2.1 demo
filter的范围:
下面的all_jobs是query的范围对所有员工工作进行分类。上面的older_person是对年龄做了filter(只对子聚合生效)。右侧的结果返回分桶的情况。
Post_Filter
- 是对聚合分析后的文档进行再次过滤
- Size 无需设置为 0
- 使用场景
- 一条语句,获取聚合信息 + 获取符合条件的文档
jobs聚合是对全部的职业分桶,post_filter是匹配查询条件:"job.keyword": "Dev Manager
Global
上面的查询条件,query是要按照age>40去筛选,下面的jobs是根据job.keyword聚合。返回的结果是1
Golbal,无视query,对全部文档进行统计:返回的结果是20条。
三 排序
3.1 order
指定 order,按照 count 和 key 排序
- 默认情况,按照 count 降序排序
- 指定 size,就能返回相应的桶
查询条件:age>20,工作类型分桶,排序是count升序,key降序。右侧的结果符合预期。
3.2 基于子聚合的值排序
基于工作类型分桶,基于分桶的平均工资再做排序。
上面统计的是单值,
这里排序是统计的min降序