ElasticSearch聚合aggs入门

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

1、单值聚合

  Sum求和,dsl参考如下:

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

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

ElasticSearch聚合aggs入门

Min求最小值

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

返回结果

ElasticSearch聚合aggs入门

Max求最大值

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

返回结果:

ElasticSearch聚合aggs入门

AVG求平均值

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

返回结果:

ElasticSearch聚合aggs入门

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

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

结果为:

ElasticSearch聚合aggs入门

2、多值聚合

percentiles 求百分比

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

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

结果:

ElasticSearch聚合aggs入门

stats 统计

查看balance的统计情况:

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

返回结果:

ElasticSearch聚合aggs入门

extended_stats 扩展统计

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

结果:

ElasticSearch聚合aggs入门

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