我正在尝试获取上次活动为“连接”的用户列表。理想情况下,我希望将其作为度量标准或Kibana中的数据表,分别显示最后连接的用户数和他们的列表。但是,我已经放弃了在基巴纳能够做到这一点的能力。我可以直接从Elasticsearch使用类似以下术语的聚合,然后再聚合top_hits。但是问题是,即使我按@timestamp对top_hits进行排序,结果文档也不是最新的。
{
"size" : 0,
"sort": { "@timestamp": {"order": "desc"} },
"aggs" : {
"by_user" : {
"terms" : {
"field" : "fields.username.keyword",
"size" : 1
},
"aggs": {
"last_message": {
"top_hits": {
"sort": [
{
"@timestamp": {
"order": "desc"
}
}
],
"_source": {
"includes": ["fields.username.keyword", "@timestamp", "status"]
},
"size": 1
}
}
}
}
}
}
答案 0 :(得分:0)
我认为您想要的是field collapsing,它比聚合要快。
类似的情况适用于您的用例:
GET my-index/_search {
"query": {
"match_all": { }
},
"collapse" : {
"field" : "fields.username.keyword"
},
"sort": [ {
"@timestamp": {
"order": "desc"
}
} ] }
我可能会丢失一些东西,但是我不认为Kibana目前对此表示支持。