我需要每 30 天(而不是每月)聚合一次数据,因此我使用date_histogramwith"fixed_interval": "30d"来获取该数据。例如,如果用户想要最近 90 天的聚合,则应该有 3 个存储桶:[90-60, 60-30, 30-0]。以今天的日期(2021 年 3 月 18 日)为例,我想要桶 [12 月 18 日、1 月 17 日、2 月 16 日]。
然而,我实际得到的是[12月4日,1月3日,2月2日,3月4日]。第一个存储桶的启动时间早于任何可用数据,这也意味着最终需要比预期更多的存储桶。
我发现您无法轻易判断您的存储桶何时开始(例如,我希望我的第一个存储桶在今天 - 90 天开始)。根据我能找到的内容(例如this ) ,桶似乎从 1970-01-01 开始,文档也有点这样说(这个链接,尽管它没有深入影响影响)。
考虑到这一点,我发现我可以使用offset一个“有趣的公式”,这样我就能得到我需要的正确的桶。例如:
GET /my_index/_search?filter_path=aggregations
{
"size": 0,
"query": {
"bool": {
"must": [
{ "range" : {
"@timestamp" : {
"gte" : "TODAY - 90/60/30",
"lt" : "TODAY"
}}
}
]
}
},
"aggs": {
"discussion_interactions_chart": {
"date_histogram": …Run Code Online (Sandbox Code Playgroud)