ElasticSearch 6.6.0 聚合平均值,脚本不起作用
ElasticSearch 6.6.0 Aggregation Avg with script not working
我尝试在我的集群上 运行 以下内容:
GET _search
{
"aggs": {
"buckets": {
"terms": {
"field": "main_feature_id.keyword",
"size": 10
},
"aggs": {
"average_dwell": {
"avg": {
"field": "dwell.dwell_ms",
"script": {
"lang": "painless",
"source": "long x = Math.round(_value*100)/100000; return x;"
}
}
}
}
}
}
}
但无论我怎么尝试,我都无法将结果四舍五入。
结果如下:
"doc_count" : 26032,
"average_dwell" : {
"value" : 44.87277178006528
}
有人可以告诉我我做错了什么吗?我确信这是显而易见的。
谢谢!
_value
脚本将脚本应用于文档的每个值,然后计算修改值的平均值。您似乎实现的是将精度降低到小数点后两位。这可以通过使用 bucket script aggregation 来获得期望值来实现。
{
"aggs": {
"buckets": {
"terms": {
"field": "main_feature_id.keyword",
"size": 10
},
"aggs": {
"average_dwell": {
"avg": {
"field": "dwell.dwell_ms"
}
},
"rounded_avg": {
"bucket_script": {
"buckets_path": {
"curr_avg": "average_dwell"
},
"script": "Math.round(params.curr_avg * 100)/100.0;"
}
}
}
}
}
}
我尝试在我的集群上 运行 以下内容:
GET _search
{
"aggs": {
"buckets": {
"terms": {
"field": "main_feature_id.keyword",
"size": 10
},
"aggs": {
"average_dwell": {
"avg": {
"field": "dwell.dwell_ms",
"script": {
"lang": "painless",
"source": "long x = Math.round(_value*100)/100000; return x;"
}
}
}
}
}
}
}
但无论我怎么尝试,我都无法将结果四舍五入。
结果如下:
"doc_count" : 26032,
"average_dwell" : {
"value" : 44.87277178006528
}
有人可以告诉我我做错了什么吗?我确信这是显而易见的。
谢谢!
_value
脚本将脚本应用于文档的每个值,然后计算修改值的平均值。您似乎实现的是将精度降低到小数点后两位。这可以通过使用 bucket script aggregation 来获得期望值来实现。
{
"aggs": {
"buckets": {
"terms": {
"field": "main_feature_id.keyword",
"size": 10
},
"aggs": {
"average_dwell": {
"avg": {
"field": "dwell.dwell_ms"
}
},
"rounded_avg": {
"bucket_script": {
"buckets_path": {
"curr_avg": "average_dwell"
},
"script": "Math.round(params.curr_avg * 100)/100.0;"
}
}
}
}
}
}