5.1.8. 最小值聚合

未匹配的标注

最小聚合

单值度量聚合,可跟踪并返回从聚合文档中提取的数值中的最小值。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。

注意:minmax聚合表示对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 
            }
        }
    }
}
  1. grade字段中没有值的文档将与具有值10的文档归入同一存储桶。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
CrazyZard
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~