带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)

简介: 带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(3)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(2) https://developer.aliyun.com/article/1229244


2、最大值聚合 max

 

最大值聚合属于单值度量聚合,可从聚合文档中的数值字段返回最大值。

 

1)基础用法

 

获取订单中产品的最大售价,并定义 max_price 为最大售价的名字,该字段也将作为结果返回:


POST /order/_search?size=0
{
    "aggs" : {
        "max_price" : { 
          "max" : { "field" : "price" } 
        }
    }
}

返回结果:


{
  ...
  "aggregations" : {
    "max_price" : {
      "value" : 9999.2
    }
  }
}

2)缺失值

 

默认情况下,当文档中缺失计算字段值时,该文档将会被忽略,若我们希望使用这部分文档,可以通过设置 missing 参数。以下例子中,缺失字段的 price 将按照 0 来计算。


POST /order/_search?size=0
{
    "aggs" : {
        "max_price" : { 
          "max" : { 
            "field" : "price",
            "missing": 0
          } 
        }
    }
}

3)Histogram fields

 

在直方图字段上计算最大值时,聚合的结果是 value 数组中所有数据的最大值,此时 count 数组中的数据将被忽略。

 

以存储不同网络的预聚合直方图和延迟度量的索引为例(数据参见 平均值聚合 avg 第3点):


POST /metrics_index/_search?size=0
{
  "aggs" : {
    "max_latency" : { 
      "max" : { 
        "field" : "latency_histo"
      } 
    }
  }
}

计算 latency_histo 字段最大值的方法为,找出每份文档中 value 的最大值,再进行比较得到所有文档中的最大值,因此上述结果为:

{
  ...
  "aggregations": {
    "max_latency": {
      "value": 0.5
    }
  }
}

4)脚本


GET order/_search?size=0
{
  "size": 0,
  "runtime_mappings": {
    "price.adjusted": {
      "type": "double",
      "script": """
        double price = doc['price'].value;
        if (doc['price'].value>20000) {
          price *= 0.8;
        }
        emit(price);
      """
    }
  },
  "aggs": {
    "max_price": {
      "max": { "field": "price.adjusted" }
    }
  }
}

3、最小值聚合 min

 

最小值聚合属于单值度量聚合,可从聚合文档中的数值字段返回最小值。

 

1)基础用法

 

获取订单中产品的最低售价,定义最低售价名为 min_price,该字段也将作为结果返回:


POST /order/_search?size=0
{
    "aggs" : {
        "min_price" : { 
          "min" : { "field" : "price" } 
        }
    }
}

返回结果:

{
  ...
  "aggregations" : {
    "min_price" : {
      "value" : 7849.46
    }
  }
}


2)缺失值

 

默认情况下,当文档中缺失计算字段值时,该文档将会被忽略,若我们希望使用这部分文档,可以通过设置 missing 参数。以下例子中,缺失字段的 price 将按照 0 来计算,所以返回结果最小值为 0。

POST /order/_search?size=0
{
    "aggs" : {
        "min_price" : { 
          "min" : { 
            "field" : "price",
            "missing" : 0
           } 
        }
    }
}

 3)Histogram fields

 

在直方图字段上计算最小值时,聚合的结果是 value 数组中所有数据的最小值,此时 count 数组中的数据将被忽略。

 

以存储不同网络的预聚合直方图和延迟度量的索引为例(数据参见 平均值聚合 avg 第3点):

POST /metrics_index/_search?size=0
{
  "aggs" : {
    "min_latency" : {
      "min" : { 
        "field" : "latency_histo" 
      } 
    }
  }
}


计算 latency_histo 字段最小值的方法为,找出每份文档中 value 的最小值,再进行比较得到所有文档中的最小值,因此上述结果为:

{
  ...
  "aggregations": {
    "min_latency": {
      "value": 0.1
    }
  }
}

4)脚本

GET order/_search?size=0
{
  "size": 0,
  "runtime_mappings": {
    "price.adjusted": {
      "type": "double",
      "script": """
        double price = doc['price'].value;
        if (doc['price'].value < 200) {
          price *= 1.2;
        }
        emit(price);
      """
    }
  },
  "aggs": {
"min_price": {
      "min": { "field": "price.adjusted" }
    }
  }
}

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.21.Aggregations(4) https://developer.aliyun.com/article/1229240

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
人工智能 Java 对象存储
Java获取阿里云图片临时URL与图片文件转换Base64编码方法
在使用阿里云人工智能产品服务时,有部分服务需要上传的参数中包含文件URL,当我们没有开通OSS服务时,可以使用临时URL服务、或部分服务支持Base64编码格式,此文章为生成临时URL-JavaSDK方案与图片文件转换Base64编码方案。
2355 0
|
新能源
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】C题 中国新能源电动汽车的发展趋势 完整论文
2023年第十三届APMCM亚太地区大学生数学建模竞赛C题"中国新能源电动汽车的发展趋势"的完整论文
331 1
【2023年第十三届APMCM亚太地区大学生数学建模竞赛】C题 中国新能源电动汽车的发展趋势 完整论文
|
机器学习/深度学习 人工智能 自然语言处理
TimeSformer:视频理解所需的只是时空注意力吗?
TimeSformer:视频理解所需的只是时空注意力吗?
709 0
TimeSformer:视频理解所需的只是时空注意力吗?
|
消息中间件 存储 缓存
五分钟搞懂分布式流控算法
五分钟搞懂分布式流控算法
694 0
五分钟搞懂分布式流控算法
|
iOS开发
Xcode给应用开启沙箱sandbox
Xcode给应用开启沙箱sandbox
414 0
Xcode给应用开启沙箱sandbox
|
SQL Java
某数据日报思路和Java汇总每日每周每月用户数据定时任务+锁
一、某数据日报思路 增加type字段 1.日报核对每一个字段,缺少的就增加 2.改造每个查询sql为查时间段,后面可以重复利用 3。先做月报,新建定时任务,自己百度cron表达式,每月1号凌晨一点执行月报定时任务 4.做周报,新建定时任务,每周一凌晨1点执行 二、Java汇总每日每周每月用户数据定时任务+锁
506 0
|
Java 应用服务中间件 编译器
IDEA 创建不同类型 Project 和 Module 详解
IDEA 创建不同类型 Project 和 Module 详解
IDEA 创建不同类型 Project 和 Module 详解
|
XML 人工智能 C#
【C#】分享简单行为树编辑器
游戏的AI行为,很多会使用行为树来代替状态机,而且通过行为树编辑器可以所见即所得,较清晰的逻辑分支执行,是配置AI行为的好工具,一般提供给策划自己进行配置AI行为即可,还是很省工作量的。我最近写了一个工具在业务的实现上想利用行为树来执行逻辑,将工具打包成可执行EXE文件,脚本只需要在行为树编辑器中编辑导出即可运行,因此尝试做了一个简单版本的行为树编辑器。
1305 0
【C#】分享简单行为树编辑器
|
开发工具 git
解决 error: failed to push some refs to *.git
今天创建了一个新的 git 仓库,想把本地的工程目录传上去,把本地仓库目录和远端仓库地址关联后,使用 git push 命令推本地文件到仓库时,发生了如下报错:
1417 0
|
机器学习/深度学习 人工智能 分布式计算
第四范式戴文渊:谷歌TensorFlow让强者更强,「先知」平台让人工智能普惠各行各业
7 月 20 日,国内人工智能创业公司第四范式发布了「先知」平台,受到了业内广泛关注。机器之心对第四范式创始人兼 CEO 戴文渊进行了专访,他介绍了第四范式的「先知」平台和核心技术,并对迁移学习和人工智能行业发表了观点。
1069 0
第四范式戴文渊:谷歌TensorFlow让强者更强,「先知」平台让人工智能普惠各行各业

热门文章

最新文章