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

时间:2017-08-09 10:40:02

标签: elasticsearch elasticsearch-plugin

我在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中执行类似的查询?

1 个答案:

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