现在我的聚合是5分钟的日期直方图聚合,然后每5分钟对结果求和。
现在我的DSL类似于:
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"time": {
"gt": "2020-03-31 11:30:00",
"lt": "2020-03-31 13:00:00"
}
}
},
{
"term": {
"domain": "s3plus-shon.meituan.net"
}
}
]
}
},
"aggs": {
"flux_stats": {
"date_histogram": {
"field": "time",
"interval": "5m",
"format": "yyyy-MM-dd HH:mm:ss"
},
"aggs": {
"flux": {
"sum": {
"field": "visit_flux"
}
}
}
}
}
}
但是我想再次对结果进行日期直方图子聚合,该间隔为30分钟,并且需要每30分钟查找一次最大值,该怎么办?
最佳答案
您可以这样进行:首先设置30m的间隔,并获取每个30m周期的最大值,然后使用5m的子间隔加上5m周期的总和。
{
"size": 0,
"query": {
"bool": {
"filter": [
{
"range": {
"time": {
"gt": "2020-03-31 11:30:00",
"lt": "2020-03-31 13:00:00"
}
}
},
{
"term": {
"domain": "s3plus-shon.meituan.net"
}
}
]
}
},
"aggs": {
"flux_stats": {
"date_histogram": {
"field": "time",
"interval": "30m",
"format": "yyyy-MM-dd HH:mm:ss"
},
"aggs": {
"flux": {
"max": {
"field": "visit_flux"
}
},
"flux_stats": {
"date_histogram": {
"field": "time",
"interval": "5m",
"format": "yyyy-MM-dd HH:mm:ss"
},
"aggs": {
"flux": {
"sum": {
"field": "visit_flux"
}
}
}
}
}
}
}
}
关于elasticsearch - 日期直方图汇总后如何再次执行日期直方图?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60982745/