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降序

猜你喜欢

转载自blog.csdn.net/bohu83/article/details/106986857
47
今日推荐