Elasticsearch 聚合分析(Aggregation)

Aggregation的语法

Metric - 单值输出 & 多值输出

Aggregation 属于 Search 的 一部分。一般情况下,建议将其 Size 指定为 0。以工资统计信息为例:

工资统计信息

先插入工资数据:

DELETE /employees
PUT /employees/
{
   
   
  "mappings" : {
   
   
      "properties" : {
   
   
        "age" : {
   
   
          "type" : "integer"
        },
        "gender" : {
   
   
          "type" : "keyword"
        },
        "job" : {
   
   
          "type" : "text",
          "fields" : {
   
   
            "keyword" : {
   
   
              "type" : "keyword",
              "ignore_above" : 50
            }
          }
        },
        "name" : {
   
   
          "type" : "keyword"
        },
        "salary" : {
   
   
          "type" : "integer"
        }
      }
    }
}

PUT /employees/_bulk
{
   
    "index" : {
   
     "_id" : "1" } }
{
   
    "name" : "Emma","age":32,"job":"Product Manager","gender":"female","salary":35000 }
{
   
    "index" : {
   
     "_id" : "2" } }
{
   
    "name" : "Underwood","age":41,"job":"Dev Manager","gender":"male","salary": 50000}
{
   
    "index" : {
   
     "_id" : "3" } }
{
   
    "name" : "Tran","age":25,"job":"Web Designer","gender":"male","salary":18000 }
{
   
    "index" : {
   
     "_id" : "4" } }
{
   
    "name" : "Rivera","age":26,"job":"Web Designer","gender":"female","salary": 22000}
{
   
    "index" : {
   
     "_id" : "5" } }
{
   
    "name" : "Rose","age":25,"job":"QA","gender":"female","salary":18000 }
{
   
    "index" : {
   
     "_id" : "6" } }
{
   
    "name" : "Lucy","age":31,"job":"QA","gender":"female","salary": 25000}
{
   
    "index" : {
   
     "_id" : "7" } }
{
   
    "name" : "Byrd","age":27,"job":"QA","gender":"male","salary":20000 }
{
   
    "index" : {
   
     "_id" : "8" } }
{
   
    "name" : "Foster","age":27,"job":"Java Programmer","gender":"male","salary": 20000}
{
   
    "index" : {
   
     "_id" : "9" } }
{
   
    "name" : "Gregory","age":32,"job":"Java Programmer","gender":"male","salary":22000 }
{
   
    "index" : {
   
     "_id" : "10" } }
{