如何在弹性搜索中执行特定的搜索查询?
How to execute particular search query in elasticsearch?
我有以下索引 mytestindex
并在 Elasticsearch 5.5 中输入 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 中执行类似的查询?
我不太明白你是对每小时的元素数量感兴趣还是对它们的平均值感兴趣?
如果你想要元素的数量,你可以使用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" }
]
}
}
}
}
我有以下索引 mytestindex
并在 Elasticsearch 5.5 中输入 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 中执行类似的查询?
我不太明白你是对每小时的元素数量感兴趣还是对它们的平均值感兴趣? 如果你想要元素的数量,你可以使用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" }
]
}
}
}
}