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

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 SQL 数据挖掘
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(1)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(1)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(2)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(2)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(12)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(12)
|
存储 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(9)
|
编解码 算法
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(6)
105 0
|
存储 算法 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(4)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(4)
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(8)
106 0
|
存储
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(5)
|
数据可视化 索引
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(13)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)
带你读《Elastic Stack 实战手册》之40:——3.4.2.21.Aggregations(10)