对ES官网的reference的翻译,同时也是备忘,ES版本为7.5
下面是正文翻译,附上原文链接:
==================================================================================================
最小值聚合
单值指标聚合,记录并返回从聚合文档中提取出来的数值中的最小值。这些值可以从文档中某些特定的数值字段中提取出来,也可以使用给定的脚本生成。
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的文档落入相同的桶中。