当前位置:   article > 正文

ES:聚合查询语法

ES:聚合查询语法

基础查询结构:

GET http://ip:prot/textbook/_search      

{          "query" : { ...query子句... },

           "aggs" : {

                "agg_name":{

                        "agg_type": {

                                "agg_arg": agg_arg_value

                            }

                     }

                },

           "sort" : { ..sort子句.. }

           "from" : 0, // 返回搜索结果的开始位置

           "size" : 10, // 分页大小,一次返回多少数据

           "_source" :[ ...需要返回的字段数组... ],

   }

这个聚合查询就是写aggs里面的语句。其中,agg_name是聚合操作的名称,agg_type是聚合操作的类型,agg_arg是聚合操作的参数,agg_arg_value是参数值。

  1. Metric(指标)
    Metric聚合用于对数值字段进行统计计算,例如求平均值、最大值、最小值、求和、统计样本方差等。它能够提供各种度量指标,以便对数据进行汇总和分析。在聚合查询中,可以通过指定一个或多个Metric聚合来对数值字段进行计算,并将结果返回给用户。
  2. Bucketing(桶)
    Bucket聚合用于将文档分配到不同的桶中,基于指定的条件。桶聚合能够将数据划分为不同的分组,以便进行进一步的分析和可视化。常见的桶聚合包括terms、histogram、date_histogram等。通过Bucket聚合,可以对数据进行分组、过滤和排序,以便更好地了解数据的分布和模式。类似于mysql中的grouo by语法。
  3. Matrix(矩阵)
    Matrix聚合提供了一种在给定文档集合上执行复杂分析的方法。它可以用于计算字段之间的统计量,例如两个字段之间的相关性或协方差。Matrix聚合返回一个矩阵,其中包含了指定字段之间的各种统计信息。通过Matrix聚合,可以对数据进行更深入的分析和探索。
  4. Pipeline(管道)
    Pipeline聚合能够对其他聚合的结果进行二次聚合。它们可以用于对已经计算出的聚合结果进行进一步的处理和计算。例如,可以将Bucket聚合的结果传递给Metric聚合,以便对桶中的数据进行度量计算。Pipeline聚合提供了更高级的聚合操作,以便更好地处理和分析数据。类似于mysql中的having语法。

1、Metric(指标)

这个查询将返回"amount"字段的平均值。在聚合查询中,"size"参数设置为0,表示不需要返回文档本身,只需要聚合结果。下面的这个只是一个简单的查询,是单值分析。

  1. Get /my_index/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. //求amount字段的平均值
  6. "amount_avg": {
  7. "avg": {
  8. "field": "amount"
  9. },
  10. //求amount字段的最小值
  11. "min_sales": {
  12. "min": {
  13. "field": "amount"
  14. }
  15. },
  16. //求amount字段的最大值
  17. "my_max":{
  18. "max": {
  19. "field":"amount"
  20. }
  21. }
  22. }
  23. }
1.1  stats(会返回多个聚合结果)
  • 使用_stats查询来获取有关字段的统计信息,例如平均值、最小值、最大值等。
  1. Get /my_index/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. //求amount字段的各个指标
  6. "my_stats": {
  7. "stats": {
  8. "field": "amount"
  9. }
  10. }
  11. }

1.2 Extended_stats(扩展统计信息)
  • 使用_extended_stats查询来获取有关字段的扩展统计信息,例如方差、偏度和峰度。
    1. GET /your_index/_search
    2. {
    3. "size": 0,
    4. "aggs": {
    5. "my_extended_stats": {
    6. "extended_stats": {
    7. "field": "amount"
    8. }
    9. }
    10. }
    11. }

1.3 唯一值(Cardinality) 
  • 查这字段有哪些值,返回这个数量。相当于mysql中的distinct
  1. GET /your_index/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "my_cardinality": {
  6. "cardinality": {
  7. "field": "amount"
  8. }
  9. }
  10. }
  11. }

1.4 Percentile_rank(百分位数排名)
  • Percentiles聚合可以了解数据的分布情况,从小到大排序,可以显示自己想知道的第百分之几的值。可以更好的了解数据的离散程度和异常值。
  1. GET /your_index/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "my_percentiles": {
  6. "percentiles": {
  7. "field": "amount",
  8. "percents": [
  9. 20,
  10. 50,
  11. 75,
  12. 99
  13. ]
  14. }
  15. }
  16. }
  17. }

1.5 top_hits(top匹配值)
  • 用于获取匹配度最高的几个文档。此时主要看的是score字段的值
  1. GET /your_index/_search
  2. {
  3. "size": 0,
  4. "aggs": {
  5. "My_top": {
  6. "top_hits": {
  7. "_source": ["aaaa"],
  8. "size": 2
  9. }
  10. }
  11. }
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/580237
推荐阅读
相关标签
  

闽ICP备14008679号