全文检索-ElasticSearch 进阶检索2

aggregations【执行聚合】

文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.5/search-aggregations.html

搜索返回 hits(命中结果),并且同时返回聚合结果,把一个响应中的所有 hits(命中结果)分隔开的能力
基本语法:
"aggregations" : {
    "<aggregation_name>" : {
        "<aggregation_type>" : {
            <aggregation_body>
        }
        [,"meta" : {  [<meta_data_body>] } ]?
        [,"aggregations" : { [<sub_aggregation>]+ } ]?
    }
    [,"<aggregation_name_2>" : { ... } ]*
}

示例1:

搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄,但不显示这些人的详情。

查询代码

GET bank/_search
{
  "query": {
    "match": {
      "address": "Mill"
    }
  },
  "aggs": {
    "ageAgg": {
      "terms": {          # terms aggregation 表示查看有多少种不同类型
        "field": "age",   # 分析query查询结果中,共有多少不同age类型
        "size": 10   # 只显示10条
      }
    },
    "ageAvg": {     # 分析query查询结果中的平均年龄
      "avg": {
        "field": "age"
      }
    },
    "balanceAvg": {   # 分析query查询结果中的平均余额
      "avg": {
        "field": "balance"
      }
    }
  },
  "size": 0   # 不显示query到的数据
}

示例2:

按照年龄聚合,并且请求这些年龄段的这些人的平均薪资

示例3:

查出所有年龄分布,并且这些年龄段中 M 的平均薪资和 F 的平均薪资以及这个年龄段的总体平均薪资

Mapping

 

阅读剩余
THE END