2015-02-23 82 views
2

我已經interval=weekmin_doc_count=0Elasticsearch:數週聚集min_doc_count不起作用

{ 
    "aggs": { 
    "scores_by_date": { 
     "date_histogram": { 
     "field": "date", 
     "format": "yyyy-MM-dd", 
     "interval": "week", 
     "min_doc_count": 0 
    } 
    } 
} 

和日期過濾器下面聚集從Jan-01-2015Feb-23-2015

{ 
    "range": { 
    "document.date": { 
     "from": "2015-01-01", 
     "to": "2015-02-23" 
    } 
    } 
} 

我預計Elasticsearch填補7周即使空和迴流桶,但最終只有一個項目在它

{ 
    "aggregations": { 
    "scores_by_date": { 
     "buckets": [ 
     { 
      "key_as_string": "2015-01-05", 
      "key": 1420416000000, 
      "doc_count": 5 
     } 
     ] 
    } 
    } 
} 

Elasticsearch version: 1.4.0

我的聚合有什麼問題,或者我怎麼能說Elasticsearch填補缺失的幾周?

回答

3

您可以嘗試指定擴展邊界(在histogram aggregations的官方文檔頁面上有文檔討論此功能)。從這些文檔最相關的金塊是這樣的:

隨着extended_bounds設置,您現在可以「逼」直方圖聚集到一個特定的最小值開始建設桶,並保持對建築桶高達最大值(即使沒有文件)。僅當min_doc_count爲0時才使用extended_bounds(如果min_doc_count大於0,則不會返回空桶)。

所以,你的聚集可能要看起來像這樣迫使ES該範圍內返回空水桶:

{ 
    "aggs": { 
    "scores_by_date": { 
     "date_histogram": { 
     "field": "date", 
     "format": "yyyy-MM-dd", 
     "interval": "week", 
     "min_doc_count": 0, 
     "extended_bounds" : { 
     "min" : "2015-01-01", 
     "max" : "2015-02-23" 
     } 
    } 
    } 
} 
+0

哇,這爲我工作,非常感謝你 – sultan 2015-02-23 14:55:25