elasticsearch 求某个字段的值(整型值不是字符串)的avg,max,min,cardinality求唯一值(某个字段不重复的值),percentiles求百分比, stats 可以统计数量

本文主要是介绍elasticsearch 求某个字段的值(整型值不是字符串)的avg,max,min,cardinality求唯一值(某个字段不重复的值),percentiles求百分比, stats 可以统计数量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

elasticsearch 求某个字段的值(整型值不是字符串)的avg,max,min,cardinality求唯一值(某个字段不重复的值),percentiles求百分比,
stats 可以统计数量,min,max,avg,sum的值
metric的聚合按照值的返回类型可以分为两种:单值聚合 和 多值聚合。


单值聚合


Sum 求和


这个聚合返回的是单个值,dsl可以参考如下:


"aggs" : {
        "intraday_return" : { "sum" : { "field" : "change" } }
    }
返回的是change字段的和:


{
    ...


    "aggregations": {
        "intraday_return": {
           "value": 2.18
        }
    }
}
其中intraday_return是聚合的名字,同时也会作为请求返回的id值。另外,聚合中是支持脚本的,这里就不过多赘述了,详细参考官方文档即可。


Min 求最小值


{
    "aggs" : {
        "min_price" : { "min" : { "field" : "price" } }
    }
}
Max 求最大值


{
    "aggs" : {
        "max_price" : { "max" : { "field" : "price" } }
    }
}
avg 求平均值


{
    "aggs" : {
        "avg_grade" : { "avg" : { "field" : "grade" } }
    }
}
cardinality 求唯一值,即不重复的字段有多少


{
    "aggs" : {
        "author_count" : {
            "cardinality" : {
                "field" : "author"
            }
        }
    }
}
多值聚合


percentiles 求百分比


{
    "aggs" : {
        "load_time_outlier" : {
            "percentile_ranks" : {
                "field" : "load_time", 
                "values" : [15, 30]
            }
        }
    }
}
返回的结果包含多个值:


{
    ...


   "aggregations": {
      "load_time_outlier": {
         "values" : {
            "15": 92,
            "30": 100
         }
      }
   }
}
stats 统计


{
    "aggs" : {
        "grades_stats" : { "stats" : { "field" : "grade" } }
    }
}
请求后会直接显示多种聚合结果:


{
    ...


    "aggregations": {
        "grades_stats": {
            "count": 6,
            "min": 60,
            "max": 98,
            "avg": 78.5,
            "sum": 471
        }
    }
}
extend stats 扩展统计


{
    "aggs" : {
        "grades_stats" : { "extended_stats" : { "field" : "grade" } }
    }
}
在统计的基础上还增加了多种复杂的统计信息:


{
    ...


    "aggregations": {
        "grade_stats": {
           "count": 9,
           "min": 72,
           "max": 99,
           "avg": 86,
           "sum": 774,
           "sum_of_squares": 67028,
           "variance": 51.55555555555556,
           "std_deviation": 7.180219742846005,
           "std_deviation_bounds": {
            "upper": 100.36043948569201,
            "lower": 71.63956051430799
           }
        }
    }
}


在性能上,ES也做了很多的优化:比如max和min,如果对于排序的字段,那么就直接跳过了计算的步骤,直接取出目标值即可。
当然有些聚合也是需要特定的场合的,比如cardinality计算唯一值是通过哈希的方式,如果字段数据规模很大,那么会消耗很多的性能。
另外桶之间是可以嵌套的,比如在range聚合下嵌套了一个max聚合,那么会在range得到的每个结果组上,再次进行max的统计。
在聚合中支持脚本的使用,可以增加统计的灵活度。

这篇关于elasticsearch 求某个字段的值(整型值不是字符串)的avg,max,min,cardinality求唯一值(某个字段不重复的值),percentiles求百分比, stats 可以统计数量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768315

相关文章

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

Java 字符串操作之contains 和 substring 方法最佳实践与常见问题

《Java字符串操作之contains和substring方法最佳实践与常见问题》本文给大家详细介绍Java字符串操作之contains和substring方法最佳实践与常见问题,本文结合实例... 目录一、contains 方法详解1. 方法定义与语法2. 底层实现原理3. 使用示例4. 注意事项二、su

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

mybatis-plus如何根据任意字段saveOrUpdateBatch

《mybatis-plus如何根据任意字段saveOrUpdateBatch》MyBatisPlussaveOrUpdateBatch默认按主键判断操作类型,若需按其他唯一字段(如agentId、pe... 目录使用场景方法源码方法改造首先在service层定义接口service层接口实现总结使用场景my

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计