在Elasticsearch中,我有一个索引,其中包含带有时间戳的文档和观察到的Web服务请求的数量。
我想执行汇总,以便每天获取观察到最大请求数的小时(高峰时段)。
我通过执行以下请求成功获得结果:
{
"aggregations" : {
"week_summary" : {
"filter" : {"range": {"@timestamp": {"gte": "2015-01-20||-7d","lte": "2015-01-20"}}},
"aggregations" : {
"oneday_interval" : {
"date_histogram" : {"field" : "@timestamp", "interval" : "1d","order" : { "_key" : "desc" }},
"aggregations" : {
"peak_hour_histogram" : {
"date_histogram" : {"field" : "@timestamp", "interval" : "1h","order" : { "peak_request_count.value" : "desc" }},
"aggregations" : {
"peak_request_count" : {
"sum" : { "field" : "request_count"}
}
}
}
}
}
}
}
},
size : 0
}
这在某种意义上说工作正常:由于能够对子聚合值上的日期直方图进行排序,peak_hour_histogram存储桶数组中的第一项确实对应于高峰时段。
尽管如此,我并不需要所有其他水桶项目(即一天中的其他23小时),我只想收到第一项。我尝试使用top_hits但没有任何成功。
您知道进行此过滤的方法吗?
注意:在实际使用案例中,我的聚合返回大约3MB的数据。因此,过滤所有这些无用的值变得很重要。
感谢您的回答。
答案 0 :(得分:0)