我有一个关于聚合的问题。我读到有关Date Histogram Aggregation的信息。但是它仅按日期对文档进行排序。所以我有索引访问,字段日期和 Visited_page 。我想汇总例如每小时的计数(例如,用户每小时的访问页面数)。将使用上面的聚合还是应该以其他方式聚合?
最佳答案
该查询应该如下所示:
GET {index_name}/{type}/_search
{
"size": 0, // no need to display search result, can boost query speed
"aggs": {
"unique_visited_page": {
"terms": {
"field": "visited_page" // this must be indexed with keyword type
},
"aggs": {
"visit_page_per_hour" : {
"date_histogram" : {
"field" : "date_field",
"interval" : "hour"
}
}
}
}
}
}
我们先按 Visited_page 进行汇总,然后每个 Visited_page 每小时进行细分,以获取计数。
使用我的样本数据的示例响应
{
...
"hits": {
"total": 4,
"max_score": 0,
"hits": []
},
"aggregations": {
"unique_visited_page": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "contact.html",
"doc_count": 2,
"visit_page_per_hour": {
"buckets": [
{
"key_as_string": "2018-07-24T14:00:00.000Z",
"key": 1532440800000,
"doc_count": 1
},
{
"key_as_string": "2018-07-24T15:00:00.000Z",
"key": 1532444400000,
"doc_count": 1
}
]
}
},
{
"key": "index.html",
"doc_count": 1,
"visit_page_per_hour": {
"buckets": [
{
"key_as_string": "2018-07-24T13:00:00.000Z",
"key": 1532437200000,
"doc_count": 1
}
]
}
},
{
"key": "page.html",
"doc_count": 1,
"visit_page_per_hour": {
"buckets": [
{
"key_as_string": "2018-07-24T13:00:00.000Z",
"key": 1532437200000,
"doc_count": 1
}
]
}
}
]
}
}
}
结果的关键是我们的 Visited_page 值,然后每小时进行汇总并返回 doc_count 。 doc_count 也许是您想要的值。
希望能帮助到你。
关于elasticsearch - 每小时总文件值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51458814/