我有一个索引,其中包含数千个以下类型的文档:
{
"user_id" : 1234,
"acc_id" : 4321,
"type_of_event" : "event",
"event_label" : "example activity",
"time_stamp" : 1582720371,
"event_info" : "example info",
"time_stamp_string" : "2022-02-26 12:32:51"
}
我希望查询返回每个user_id
的最后一条记录(按time_stamp_string
)。我尝试的是:
GET my_index/_search
{
"aggs": {
"top_id": {
"max": {
"field": "user_id"
}
}
}
}
它失败了,返回的条目比最新的条目旧。我不明白为什么它不起作用。
1条答案
按热度按时间6yoyoihd1#
它并没有按照你的要求去做,因为你并没有考虑时间戳,你只是要求Elasticsearch显示
user_id
最好的方法是将top hits agg与terms agg沿着使用,类似于这样:
它的作用是识别每个唯一的
user_id
,然后为每个time_stamp
找到最新的值