2017-08-16 72 views
0

我試圖通過聚合將我的文檔按小時分組一段時間,但總是得到「期望的字段名稱」異常但得到了[START_OBJECT]「?有什麼問題?如何在彈性搜索聚合中將文檔按小時分組?

{ 
    "query" : { 
    "bool" : { 
     "must" : { 
     "range" : { 
      "timestamp" : { 
      "from" : "2017-08-14 00:00:00", 
      "to" : "2017-08-15 00:00:00", 
      "include_lower" : true, 
      "include_upper" : true 
      } 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "result_by_hours": { 
     "histogram": { 
     "script": "doc.timestamp.date.getHourOfDay()", 
     "interval": 1 
     } 
    } 
    } 
} 

我期望的是返回昨天每小時的文件數量。我如何使用動態實時代替「2017-08-14 - 2017-08-15」?

感謝提前:)

+0

第二嘗試也失敗了:( 「AGGS」:{ 「result_by_hours」:{ 「date_histogram」:{ 「場」: 「時間戳」, 「間隔」: 「小時」, 「格式」:「 k「 } } } – Joey

+0

什麼是es版本? – sunkuet02

+0

ES版本是2.3 – Joey

回答

0

根據ES版本,您可以到「現在」使用相對範圍過濾器/查詢,現在前-1D/d會1天時光倒流。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

至於AGGS見的例子你也可以組通過的間隔例如使用date_histogram與間隔 在ES 5.5小時: 查詢:

"range" : { 
      "timestamp" : { 
      "gte" : "now-1d/d, 
      "lte" : "now/d" 
      } 
     } 

Aggs:

{ 
     "aggs" : { 
      "values_over_time" : { 
       "date_histogram" : { 
        "field" : "timestamp", 
        "interval" : "1h" 
       } 
      } 
     } 
    }