我有一个问题陈述,我有一个以Es为单位的车辆数据,其中以秒为单位的时间字段,以毫秒为单位的时间和速度字段。现在,我想在前端获取数据并绘制速度与时间的关系图。但是问题是有很多数据点,因为一秒内有30-40毫秒的条目以及相应的速度。现在,要减少数据点,我想获得一秒钟的平均速度,这样一秒钟我将只有一个数据点。如何在Es中实现这一目标。
答案 0 :(得分:1)
考虑到您的映射看起来像-
{
"properties": {
"ms": {
"type": "integer"
},
"seconds": {
"type": "integer"
},
"velocity": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": "256"
}
}
}
}
}
下面的嵌套聚合将起作用- 您将在“ averageMsInSecond”字段中获得数据点。
{
"size": 0,
"aggs": {
"seconds_buckets": {
"terms": {
"field": "seconds"
},
"aggs": {
"averageMsInSecond": {
"avg": {
"field": "ms"
}
}
}
}
}
}
为了获得一秒钟的平均值,您需要读取seconds_buckets aggs中的密钥,并将其与averageMsInSecond一起使用。
希望有帮助。