我每小时有大约100份文件。每个文档都有viewers
属性(整数)。
到那天结束时,我希望聚合一个包含24个文档的数组,每天每小时一个,由具有最高viewers
计数的文档表示。
到目前为止我的查询:
// query, fetch all documents of a specific day
var query = {
bool : {
filter : [
{
range : {
'created' : {
gte : day,
lte : day + (60 * 60 * 24)
}
}
}
]
}
}
// aggregation
var aggs = {
// ?
}
答案 0 :(得分:0)
我认为可以使用Date Histogram加Top Hits聚合来实现。看看这个:
{
"size": 0,
"aggs": {
"articles_over_time": {
"date_histogram": {
"field": "created",
"interval": "minute"
},
"aggs": {
"Viewers": {
"top_hits": {
"size": 1,
"sort": [
{
"viewers": {
"order": "desc"
}
}
]
}
}
}
}
}
}
Date Histogram聚合将在过滤日期范围内为每小时创建存储桶,并且热门点击会使带有最高查看者的文档恢复(我们按照降序排列文档,并且排名前1)。
让我知道这是否有效。