2017-08-16 12 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 
     } 
    } 
    } 
} 

私が期待するのは、昨日の1時間あたりのドキュメント数を返すことです。 「2017-08-14 - 2017-08-15」ではなく、どのように動的リアルタイムを使用できますか?事前に

感謝:)

+0

2試みも失敗:( "aggs":{ "result_by_hours":{ "date_histogram":{ "フィールド": "タイムスタンプ"、 "間隔": "時"、 "フォーマット": " k " } } } – Joey

+0

esバージョンとは何ですか? – sunkuet02

+0

ESバージョンは2.3です – Joey

答えて

0

ESのバージョンに応じて、「今」の範囲フィルタ/クエリの相対を使用することができ、元今-1D/dが時間内に戻って1日になります。 aggsについては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

を参照してください例することもできますグループの間隔によってインスタンスES 5.5では間隔 でdate_histogramを使用して時間: クエリ:

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

アグス:

{ 
     "aggs" : { 
      "values_over_time" : { 
       "date_histogram" : { 
        "field" : "timestamp", 
        "interval" : "1h" 
       } 
      } 
     } 
    } 
関連する問題