ElasticSearch聚合aggs入门

Posted 浩月白雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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入门的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch聚合查询

Elasticsearch学习笔记聚合分析Agg

Elasticsearch 顶尖高手--快速入门案例实战:group by + avg + sort等聚合分析

elasticsearch aggs 嵌套查询 多个select 统计/聚合部分查询结果

ElasticSearch 聚合函数

elasticsearch 的基本查询语法使用(下)