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,表示不需要返回文档本身,只需要聚合结果。下面的这个只是一个简单的查询,是单值分析。

Get /my_index/_search
{
  "size": 0,
  "aggs": {
//求amount字段的平均值
    "amount_avg": {
      "avg": {
        "field": "amount"
      },
//求amount字段的最小值
    "min_sales": {
      "min": {
        "field": "amount"
      }
    },
//求amount字段的最大值
    "my_max":{
       "max": {
         "field":"amount"        
        }
    }
  }
}
1.1  stats(会返回多个聚合结果)
  • 使用_stats查询来获取有关字段的统计信息,例如平均值、最小值、最大值等。
Get /my_index/_search
{
  "size": 0,
  "aggs": {
//求amount字段的各个指标
    "my_stats": {
      "stats": {
        "field": "amount"
      }
  }
}

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

1.3 唯一值(Cardinality) 
  • 查这字段有哪些值,返回这个数量。相当于mysql中的distinct
GET /your_index/_search
{
  "size": 0,
  "aggs": {
    "my_cardinality": {
      "cardinality": {
        "field": "amount"
      }
    }
  }
}

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

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

  • 16
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日上三杆快起床

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值