我使用interval=week
和min_doc_count=0
{
"aggs": {
"scores_by_date": {
"date_histogram": {
"field": "date",
"format": "yyyy-MM-dd",
"interval": "week",
"min_doc_count": 0
}
}
}
和日期过滤从Jan-01-2015
到Feb-23-2015
{
"range": {
"document.date": {
"from": "2015-01-01",
"to": "2015-02-23"
}
}
}
我预计Elasticsearch会填充七周,即使是空的并且返回桶但最终只有一个项目
{
"aggregations": {
"scores_by_date": {
"buckets": [
{
"key_as_string": "2015-01-05",
"key": 1420416000000,
"doc_count": 5
}
]
}
}
}
Elasticsearch version: 1.4.0
我的汇总有什么问题,或者我怎么能说Elasticsearch填补缺失的周数?
答案 0 :(得分: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"
}
}
}
}