我在Elasticsearch 5.5中有以下索引mytestindex
并输入mytesttype
:
PUT /mytestindex
{
"mappings": {
"mytesttype": {
"_source": {
"enabled": true
},
"_all": {
"enabled": true
},
"properties": {
"Id": {
"type":"text"
},
"RadarId": {
"type":"keyword"
},
"VehicleId": {
"type":"keyword"
},
"Datetime": {
"type":"date",
"format": "yyyy-MM-dd HH:mm:ss.SSS"
},
"Hour": {
"type":"integer"
}
}
}
}
}
我是Elasticsearch的初学者。我想知道是否可以在11:00到12:00之间获得每小时平均车辆数?我应该使用哪种类型的查询?例如,在MySQL中我会做这样的事情(简化版本而不考虑11:00-12:00):
SELECT AVG( value ), datetime
FROM mytable
GROUP BY HOUR( datetime )
是否可以在Elasticsearch中执行类似的查询?
答案 0 :(得分:0)
如果您对每小时的元素数量或其价值的平均值感兴趣,我不能完全理解这个问题吗? 如果您想要元素数量,可以使用Date Range Aggregation
示例:
{
"aggs": {
"range": {
"date_range": {
"field": "Datetime",
"format": "yyyy-MM-dd HH:mm:ss.SSS",
"ranges": [
{ "to": "now-1H/H" },
{ "from": "now-1H/H" }
]
}
}
}
}