美文网首页
ElasticSearch 7.x 聚合查询

ElasticSearch 7.x 聚合查询

作者: NOW_GO | 来源:发表于2021-01-10 14:52 被阅读0次

    聚合查询

    |ES 的聚合查询和MyQL的聚合查询类型,ES 的聚合查询相比MySQL 要强大的多,ES提供的统计数据方式多种多样。

    GET /index/_search
    {"aggs":{   "名字(agg)":{   "agg_type":{   "属性":"值"  }}}}
    

    例子

    • 查询总和

    "size":0 只查询聚合结果

    GET index/_search
    { "size":0 ,"aggs":{   "sum_field":{ "sum":{"field":"field"} } }}
    
    • 平均数

    "size":0 只查询聚合结果

    GET index/_search
    { "size":0 ,"aggs":{   "sum_field":{ "avg":{"field":"field"} } }}
    
    • 数量

    "size":0 只查询聚合结果。相当于 MySQL count(distinct)

    GET index/_search
    { "size":0 ,"aggs":{   "sum_field":{ "cardinality":{"field":"field"} } }}
    
    • 最大值、最小值
    GET index/_search
    { "size":0 ,"aggs":{   "min_field":{ "min":{"field":"value"} }, "max_field":{ "max":{"field":"value"} } }}
    
    • 多个统计

    返回 count,min,max,avg,sum 等信息 stats 只支持数值类型

    GET index/_search
    { "size":0 ,"aggs":{   "field_info":{ "stats":{"field":"fieldName"} } }}
    
    • 分组统计
    GET index/_search
    { "size":0 ,"aggs":{   "dest_country_info":{ "terms":{"field":"fieldName"} } }}
    
    • 嵌套聚合查询

    查询不同工种的男女员工数量、然后统计不同工种下男女员工的工资信息

     Get index/_search
    {
       "aggs":{
         "job_info":{ "terms":{"field":"job"}},
           "aggs":{ "diff_job_gener_no":{"terms":{"field":"gender"}}
                     "aggs":{"diff_job_gender_sal_info":{"stats":{"field":"sal"}}}
                 }
    }
    
    
    • top_hits

    查询年龄最大的两位员工的信息

    GET index/_search
    { "size":0 ,"aggs":{   "older_two_emp":{ "top_hits":{"size":2,"sort":[
    {"age":{"order":"desc"}}
    ]} } }}
    
    • range

    查询不同工资区间员工工资的统计信息

    GET index/_search
    {   "size":0, 
     "aggs":{
    "range_sal_info":{
    "range":{
     "field":"sal",
    "ranges":[ { "from":50,"to":100},  { "from":101,"to":200} ]}
    }}
    }
    
    • 直方图
     Get index/_search
    {
       "aggs":{
         "range_sal_info":{ 
           "histogram":{
                "field":"sal",
                "interval":5000,
                "extended_bounds":{"min":0,"max":1500}}
                 }
    }
    
    
    • 查询平均工资最低的工种 buckets_path
    GET employee/_search
    {
    "size":0,
    "aggs"{"job_info":{ "terms":{"field":"job"}},
    "aggs":{ "diff_job_avg_sal":{  "avg":{"field":"sal"}}},
    "min_avg_sal_job":{"min_bucket":{"buckets_path":"job_info>diff_job_avg_sal"}}}}
    

    相关文章

      网友评论

          本文标题:ElasticSearch 7.x 聚合查询

          本文链接:https://www.haomeiwen.com/subject/jvchaktx.html