ES官网reference翻译文章(16)—Min Aggregation

对ES官网的reference的翻译,同时也是备忘,ES版本为7.5

下面是正文翻译,附上原文链接:

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-min-aggregation.html

==================================================================================================

最小值聚合

单值指标聚合,记录并返回从聚合文档中提取出来的数值中的最小值。这些值可以从文档中某些特定的数值字段中提取出来,也可以使用给定的脚本生成。

NOTE:最小值和最大值聚合是在double格式的数据上计算的。因此,当在long型数值(绝对值大于2^53)上运行这两个聚合时结果是近似的。

计算所有文档的最小单价:

curl -X POST http://host_ip:host_port/sales/_search?pretty
-H 'content-type:application/json'
-d '{
    "aggs": {
        "min_price": {
            "min": {
                "field": "price"
            }
        }
    }    
}'

响应:

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

可以看到,聚合的名称(这里的min_price)也能作为从返回的响应中提取除聚合结果的key。

脚本

最小值聚合也能计算脚本的最小值,下面的例子计算最小价格:

curl -X POST http://host_ip:host_port/sales/_search?pretty
-H 'content-type:application/json'
-d '{
    "aggs": {
        "min_price": {
            "min": {
                "script": {
                    "source": "doc.price.value"
                }
            }    
        }
    }    
}'

上面的请求会使用painless脚本语言编写的无参数的脚本,为了使用缓存的脚本,使用下面的请求:

curl -X POST http://host_ip:host_port/sales/_search?pretty
-H 'content-type:application/json'
-d '{
    "aggs": {
        "min_price": {
            "min": {
                "script": {
                    "id": "my_script",
                    "params": {
                        "field": "price"
                    }
                }
            }    
        }
    }    
}'

值脚本

假设我们索引的文档中价格的单位是USD,但我们想要以EURO为单位计算最小值(在这个例子中,假设准换的汇率是1.2)。在文档被聚合之前,我们可以使用一个值脚本来对文档中的每个值进行汇率转换:

curl -X POST http://host_ip:host_port/sales/_search?pretty
-H 'content-type:application/json'
-d '{
    "aggs": {
        "min_price_in_euros": {
            "min": {
                "field": "price",
                "script": {
                    "source": "_value*params.conversion_rate",
                    "params": {
                        "conversion_rate": 1.2
                    }
                }
            }    
        }
    }    
}'

缺失的值

missing参数定义了缺失某些值的文档应该如何处理。默认的,这些文档会被忽略但我们也能把这些文档当作有值来处理:

curl -X POST http://host_ip:host_port/sales/_search?pretty
-H 'content-type:application/json'
-d '{
    "aggs": {
        "grade_min": {
            "min": {
                "field": "grade",
                "missing": 10
            }    
        }
    }    
}'

grade字段缺失值的文档将会和grade=10的文档落入相同的桶中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值