聚合

聚合是一种分析数据的方法,它将数据分组并计算每个组的指标。聚合可以看作是 SQL 中的 GROUP BY、聚合函数等操作。

搜索 address 中包含 mill 的所有人的年龄分布以及平均年龄:

// GET http://localhost:9200/account/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "age_agg": {
      "terms": {
        "field": "age"
      }
    },
    "age_avg": {
      "avg": {
        "field": "age"
      }
    }
  }
}

统计所有人的年龄分布,并求出每个年段的平均薪资:

// GET http://localhost:9200/account/_search
{
  "_source": false, // hits.hits 中不返回 _source
  "size": 0, // 不返回文档, 即 hits.hists 为空
  "aggs": {
    "age_agg": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "balance_avg": {
          "avg": {
            "field": "balance",
            "size": 10 // 只返回前 10 种分布情况
          }
        }
      }
    }
  }
}

统计所有人的年龄分布,并且额外统计各个年龄段 MF 的平均薪资和整个年龄段的平均薪资:

// GET http://localhost:9200/account/_search
{
  "size": 0,
  "aggs": {
    "aggAgg": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "genderAgg": {
          "terms": {
            "field": "gender.keyword" // text 类型的字段做聚合时需要加上 .keyword
          },
          "aggs": {
            "balanceAvg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        },
        "balanceAvg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}