首页 > 代码库 > ElasticSearch聚合aggs入门

ElasticSearch聚合aggs入门

Elasticsearch是一款功能强大的开源软件,不仅可以检索排序,还可以对文档进行更复杂的操作--聚合。

 

1、单值聚合

  Sum求和,dsl参考如下:

 

{  "size": 0,  "aggs": {    "return_balance": {      "sum": {        "field": "balance"      }    }  }}

 

返回balance之和,其中size=0 表示不需要返回参与查询的文档。

技术分享

Min求最小值

{  "size": 0,  "aggs": {    "return_min_balance": {      "min": {        "field": "balance"      }    }  }}

返回结果

技术分享

Max求最大值

{  "size": 0,  "aggs": {    "return_max_balance": {      "max": {        "field": "balance"      }    }  }}

返回结果:

技术分享

AVG求平均值

{  "size": 0,  "aggs": {    "return_avg_balance": {      "avg": {        "field": "balance"      }    }  }}

返回结果:

技术分享

Cardinality 求基数(如下示例,查找性别的基数 M、F,共两个)

{  "size": 0,  "aggs": {    "return_cardinality": {      "cardinality": {        "field": "gender"      }    }  }}

结果为:

技术分享

2、多值聚合

 

percentiles 求百分比

查看官方文档时候,没看懂,下面是自己测试时的例子,按照性别(F,M)查看工资范围的百分比

{  "size": 0,  "aggs": {    "states": {      "terms": {        "field": "gender"      },      "aggs": {        "banlances": {          "percentile_ranks": {            "field": "balance",            "values": [              20000,              40000            ]          }        }      }    }  }

结果:

技术分享

 

 

 

stats 统计

查看balance的统计情况:

{  "size": 0,  "aggs": {    "balance_stats": {      "stats": {        "field": "balance"      }    }  }}

返回结果:

技术分享

extended_stats 扩展统计

{  "size": 0,  "aggs": {    "balance_stats": {      "extended_stats": {        "field": "balance"      }    }  }}

结果:

技术分享

 

更加复杂的查询,后续慢慢在实践中道来。

 

ElasticSearch聚合aggs入门