第一章第十四节:Elasticsearch之aggs聚合查询

1、简单聚合查询

语法:
"aggs": {
    "名称": {
      "聚合类型": {
        "field": "聚合字段"
      }
    }
  }

常用聚合查询:
terms:分组查询,并返回数量
avg:平均值查询
sum:总和查询
max:最大值查询
min:最小值查询
stats:返回以上所有信息
#terms:查询年龄分布,相当于分组
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageaggs": {
      "terms": {
        "field": "age"
      }
    }
  }
}

#avg:查询年龄平均值
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageavg": {
      "avg": {
        "field": "age"
      }
    }
  }
}

#avg:查询年龄总和
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "agesum": {
      "sum": {
        "field": "age"
      }
    }
  }
}

#max:查询年龄总和
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "agemax": {
      "max": {
        "field": "age"
      }
    }
  }
}

#min:查询年龄总和
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "agemin": {
      "min": {
        "field": "age"
      }
    }
  }
}

#stats:查询年龄总数、最小值、最大值、平均值、总和
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "agestats": {
      "stats": {
        "field": "age"
      }
    }
  }
}

2、多聚合查询

语法:
"aggs": {
    "名称": {
      "聚合类型": {
        "field": "聚合字段"
      }
    },
    "名称": {
      "聚合类型": {
        "field": "聚合字段"
      }
    }
  }

#查询所有年龄分布以及所有年龄的平均值
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageaggs": {
      "terms": {
        "field": "age"
      }
    },
    "ageavg":{
      "avg": {
        "field": "age"
      }
    }
  }
}

2、聚合嵌套查询

语法:
  "aggs": {
    "名称": {
      "聚合类型": {
        "field": "聚合字段"
      },
      "aggs": {
        "名称": {
          "聚合类型": {
            "field": "聚合字段"
          }
        }
      }
    }
  }
#查询所有年龄分布以及每个年龄分布的平局工资
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageaggs": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "balanceagg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

#查询所有年龄分布以及每个年龄段的性别分布以及按性别分布的平局工资
GET /bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageaggs": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "genderagg": {
          "terms": {
            "field": "gender.keyword"
          },
          "aggs": {
            "balanceavg": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}
posted @ 2021-07-04 14:37  努力的校长  阅读(507)  评论(0编辑  收藏  举报