• Elasticsearch 聚合字段aggregate-metric-double


    https://www.elastic.co/guide/en/elasticsearch/reference/8.1/aggregate-metric-double.html

    环境信息

    • Elasticsearch 8.1
    • Kibana 8.1
    • MacOS 10.14.6

    描述

    今天我们学习一下Elasticsearch的聚合字段类型,所谓聚合字段类型,类型设置为aggregate_metric_double作为一个对象,子字段可以有min,max,sum,value_count,当我们对字段设置为aggregate_metric_double类型的字段做聚合时,它能够直接使用子字段的值进行聚合,比如最大值就可以直接去子对象中max的值比较

    参数

    aggregate_metric_double类型的字段支持以下三个参数的设置

    • metrics

      必填、数组值、最少包含以下值的一个[min,max,sum,value_count]

    • default_metric

      聚合子字段查询,script的字段设置,字符串,必须是metrics数组中的一个

    • time_series_metric

      可选,字符串值,默认为空,支持counter,gauge,summary中的某一个。当前版本为预览功能,最新版参考

      https://www.elastic.co/guide/en/elasticsearch/reference/master/tsds.html#time-series-metric

      https://www.elastic.co/guide/en/elasticsearch/reference/master/aggregate-metric-double.html

    使用

    • min 使用子字段的min字段进行聚合统计

    • max 使用子字段的max字段进行聚合统计

    • sum 使用子字段的sum字段进行聚合统计

    • value_count 使用子字段的value_count字段进行聚合统计

    • avg 这个比较特殊,他没有子字段,他使用sumvalue_count两个字段聚合的结果,也就是说聚合字段的子对象必须同时包含sumvalue_count

    验证

    如下是测试的例子,参考如下

    • 首先我们还是通过Kibana 创建一个索引,索引中就包含一个aggregate_metric_double类型的一个对象字段

      PUT my-index-006
      {
        "mappings": {
          "properties": {
            "zuiyu_agg_metric_field":{
              "type":"aggregate_metric_double",
              "metrics":["min","max","sum","value_count"],
              "default_metric":"max"   
              }
          }
        }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    • 下面是插入测试数据

      POST _bulk
      {"index":{"_index":"my-index-006","_id":"1"}}
      {"zuiyu_agg_metric_field":{"min":100.00,"max":1000.00,"sum":5000.00,"value_count":10}}
      {"index":{"_index":"my-index-006","_id":"2"}}
      {"zuiyu_agg_metric_field":{"min":-10.00,"max":30.00,"sum":70.00,"value_count":8}}
      {"index":{"_index":"my-index-006","_id":"3"}}
      {"zuiyu_agg_metric_field":{"min":-90.00,"max":300.00,"sum":200.00,"value_count":5}}
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • 搜索聚合统计验证(?size=0 不反悔查询结果只返回聚合结果)

      GET my-index-006/_search?size=0
      {
        "aggs": {
          "zuiyu_min": {
            "min": {
              "field": "zuiyu_agg_metric_field"
            }
          },
          "zuiyu_max": {
            "max": {
              "field": "zuiyu_agg_metric_field"
            }
          },
          "zuiyu_sum": {
            "sum": {
              "field": "zuiyu_agg_metric_field"
            }
          },
          "zuiyu_value_count": {
            "value_count": {
              "field": "zuiyu_agg_metric_field"
            }
          },
          "zuiyu_avg": {
            "avg": {
              "field": "zuiyu_agg_metric_field"
            }
          }
        }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
    • 测试default_metric字段对查询时的默认匹配与排序

      GET my-index-006/_search
      {
        "query": {
          "term": {
            "zuiyu_agg_metric_field": {
              "value": "30"
            }
          }
        }
      }
      
      GET my-index-006/_search
      {
        "query": {
          "match_all": {}
        },
        "sort": [
          {
            "zuiyu_agg_metric_field": {
              "order": "asc"
            }
          }
        ]
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25

    总结

    字段类型为aggregate_metric_double的字段,可以设置metrics,支持minmaxsumvalue_countavg五中,其中avg不显示设置,avg取值sumvalue_count。设置字段之后我们之后的聚合操作可以直接使用类型为aggregate_metric_double字段的子对象中对应的max,min,sum,value_count进行聚合

    本文由 mdnice 多平台发布

  • 相关阅读:
    【分享】集简云小程序识别财务票据同步到金蝶云星辰流程搭建示例
    C++ 类和对象篇(五) 析构函数
    语义分割基础知识
    java毕业设计超市管理系统Mybatis+系统+数据库+调试部署
    Redis 学习
    Linux生产者消费者模型(POSIX信号量)
    [ZOOKEEPER]zookeeper基础知识笔记
    【深度学习手记】使用DNN训练与CNN训练对数据集的要求不一样,为什么CNN网络训练输入的数据需要4维的
    VSCode 配置 Spring Boot 项目开发环境
    HiSilicon352 android9.0 emmc添加新分区
  • 原文地址:https://blog.csdn.net/C1041067258/article/details/126336966