我的目标是在开始日期和结束日期之间建立一个直方图,空的日期应该出现在直方图中,并且计数值为零。
我正在尝试以下查询来获取最近7天的数据:
POST my_index/_search
{
"size": 0,
"query": {
"range": {
"date": {
"gte": "now-7d/d",
"lte": "now/d"
}
}
},
"aggs" : {
"count_per_day" : {
"date_histogram" : {
"field" : "date",
"interval" : "day",
"order": {"_key": "desc"},
"min_doc_count": 0
}
}
}
}问题是我只有最近3天的数据,所以在3天前根本没有数据。在这种情况下,结果只包含最近3天,并且不会返回前几天。
但如果存在差距(即6天前有数据,但第5天和第4天没有数据),则空天数将显示为零作为计数。
在没有数据的情况下,如何强制返回缺席日期?换句话说,在没有数据的情况下,如何确定存储桶的数量(上例中为7)?
发布于 2019-03-01 18:59:51
您已经添加了包含空存储桶的"min_doc_count": 0。你所需要做的就是添加extended_bounds参数来强制开始和结束存储桶。更多信息可以在here上找到。
按如下方式更新您的查询:
{
"size": 0,
"query": {
"range": {
"date": {
"gte": "now-7d/d",
"lte": "now/d"
}
}
},
"aggs": {
"count_per_day": {
"date_histogram": {
"field": "date",
"interval": "day",
"order": {
"_key": "desc"
},
"min_doc_count": 0,
"extended_bounds": {
"min": "now-7d/d",
"max": "now/d"
}
}
}
}
}https://stackoverflow.com/questions/54942602
复制相似问题