2017-09-26 134 views
0

我在elasticsearch中執行查詢。我需要針對索引中表示的每個月的屬性「end_date_ut」(類型爲Date,格式爲dateOptionalTime)的點擊次數。爲此,我使用了date_histogram聚合。如何在date_histogram集合上放大小

我只是查詢波紋管:

GET inc/_search 
{ 
    "size": 0, 
    "aggs": { 
    "appli": { 
     "date_histogram": { 
     "field": "end_date_ut", 
     "interval": "month" 
     } 
    } 
    } 
} 

這裏是結果的一部分:

"hits": { 
    "total": 517478, 
    "max_score": 0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "appli": { 
     "buckets": [ 
     { 
      "key_as_string": "2009-08-01T00:00:00.000Z", 
      "key": 1249084800000, 
      "doc_count": 0 
     }, 
     { 
      "key_as_string": "2009-09-01T00:00:00.000Z", 
      "key": 1251763200000, 
      "doc_count": 1 
     }, 
     { 
      "key_as_string": "2009-10-01T00:00:00.000Z", 
      "key": 1254355200000, 
      "doc_count": 2362 
     }, 
     { 
      "key_as_string": "2009-11-01T00:00:00.000Z", 
      "key": 1257033600000, 
      "doc_count": 5336 
     }, 
     { 
      "key_as_string": "2009-12-01T00:00:00.000Z", 
      "key": 1259625600000, 
      "doc_count": 7536 
     }, 
     { 
      "key_as_string": "2010-01-01T00:00:00.000Z", 
      "key": 1262304000000, 
      "doc_count": 8864 
     } 

的問題是,我有太多的桶(結果)。當我使用「術語聚合」時,我沒有任何問題,因爲我可以設置大小,但是使用「date_histogram聚合」,我無法找到限制查詢結果的方法。

+0

您需要添加一個範圍查詢以限制運行'date_aggregation'的時間間隔。 – Val

+0

這是一個很好的解決方案,但我不想限制時間間隔。有沒有另一種方法只獲得20個第一個結果? –

+1

您可以使用'min_doc_count'來僅包含具有數據的存儲區,即具有0個文檔的存儲區不會返回響應。 – Val

回答

0

我建議使用min_doc_count只包含有數據的桶,即帶有0個文檔的桶不會迴應響應。

GET inc/_search 
{ 
    "size": 0, 
    "aggs": { 
    "appli": { 
     "date_histogram": { 
     "field": "end_date_ut", 
     "interval": "month", 
     "min_doc_count": 1   <--- add this 
     } 
    } 
    } 
} 

如果可以的話,你也可以在爲了抑制在其上運行聚集的時間間隔添加range查詢。