如何在弹性搜索中执行特定的搜索查询?

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" } 
            ]
        }
    }
}
}