第一章第十四节: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 @   努力的校长  阅读(541)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示