最大聚合
单值度量聚合,跟踪并返回从聚合文档中提取的数值中的最大值。这些值可以从文档中的特定数字字段中提取,也可以由提供的脚本生成。
提示:最小和最大聚合对数据的双重表示进行操作。因此,当在绝对值大于2^53的多头上运行时,结果可能是近似的。
计算所有文档的最大价格值:
POST /sales/_search?size=0
{
"aggs" : {
"max_price" : { "max" : { "field" : "price" } }
}
}
响应:
{
...
"aggregations": {
"max_price": {
"value": 200.0
}
}
}
可以看到,聚合的名称(上面的max_price)也充当从返回的响应中检索聚合结果的键。
脚本
可以使用脚本计算文档的最大值,下面的示例计算最大价格:
POST /sales/_search
{
"aggs" : {
"max_price" : {
"max" : {
"script" : {
"source" : "doc.price.value"
}
}
}
}
}
这将使用Painless 脚本语言,而不使用脚本参数。要使用存储的脚本,请使用以下语法:
POST /sales/_search
{
"aggs" : {
"max_price" : {
"max" : {
"script" : {
"id": "my_script",
"params": {
"field": "price"
}
}
}
}
}
}
脚本值
假设我们的索引中的文档的价格是美元,但是我们想以欧元计算最大值(为了这个例子,假设转换率是1.2)。我们可以使用值脚本将转换率应用于每个值,然后再对其进行聚合:
POST /sales/_search
{
"aggs" : {
"max_price_in_euros" : {
"max" : {
"field" : "price",
"script" : {
"source" : "_value * params.conversion_rate",
"params" : {
"conversion_rate" : 1.2
}
}
}
}
}
}
缺省值
缺少参数定义如何处理缺少值的文档。默认情况下,它们将被忽略,但也可以将它们视为具有值。
POST /sales/_search
{
"aggs" : {
"grade_max" : {
"max" : {
"field" : "grade",
"missing": 10 <1>
}
}
}
}
-
“等级”字段中没有值的文档与值为10的文档属于同一个存储桶。
最小聚合
同最大聚合:把上述的max替换成min则为对最小聚合的翻译