2015-02-23 261 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