5.1.8. 最小值聚合
最小聚合
单值
度量聚合,可跟踪并返回从聚合文档中提取的数值中的最小值。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。
注意:
min
和max
聚合表示对double
的数据进行操作,结果当在绝对值大于2 ^ 53
的多头上运行时,结果可能是近似的。
计算所有文档的最低价格值:
POST /sales/_search?size=0
{
"aggs" : {
"min_price" : { "min" : { "field" : "price" } }
}
}
相应:
{
...
"aggregations": {
"min_price": {
"value": 10.0
}
}
}
可以看出,聚合的名称(上面的min_price
)也用作键,通过该键可以从返回的响应中检索聚合结果。
脚本
min
聚合也可以计算脚本的最小值。下面的示例计算最低价格:
POST /sales/_search
{
"aggs" : {
"min_price" : {
"min" : {
"script" : {
"source" : "doc.price.value"
}
}
}
}
}
这将使用 Painless 脚本语言,并且不使用脚本参数。要使用存储的脚本,请使用以下语法:
POST /sales/_search
{
"aggs" : {
"min_price" : {
"min" : {
"script" : {
"id": "my_script",
"params": {
"field": "price"
}
}
}
}
}
}
值脚本
假设我们索引中的文档价格以美元为单位,但是我们想以欧元为单位计算最小值(在本例中,转化率为1.2)。我们可以使用值脚本将转化率应用于每个值,然后再进行汇总:
POST /sales/_search
{
"aggs" : {
"min_price_in_euros" : {
"min" : {
"field" : "price",
"script" : {
"source" : "_value * params.conversion_rate",
"params" : {
"conversion_rate" : 1.2
}
}
}
}
}
}
缺失值
missing
参数定义应如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值。
POST /sales/_search
{
"aggs" : {
"grade_min" : {
"min" : {
"field" : "grade",
"missing": 10
}
}
}
}
- 在
grade
字段中没有值的文档将与具有值10
的文档归入同一存储桶。
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。