我遇到了搜索问题,我无法弄清楚如何做到这一点.我的文档具有以下形式:
{
"timestamp":"2015-03-17T15:05:04.563Z",
"session_id":"1",
"user_id":"jan"
}
Run Code Online (Sandbox Code Playgroud)
假设会话ID的第一个时间戳是"登录",最后一个时间戳是"注销".我希望所有会话都有"登录"和"注销"文档(如果可能的话,按顺序排序user_id).我设法通过聚合获得正确的时间戳:
{
"aggs" : {
"group_by_uid" : {
"terms" : {
"field" : "user_id"
},
"aggs" : {
"group_by_sid" : {
"terms" : {
"field" : "session_id"
},
"aggs" : {
"max_date" : {
"max": { "field" : "timestamp" }
},
"min_date" : {
"min": { "field" : "timestamp" }
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我如何获得相应的文档?我也不介意我是否必须进行2次搜索(一次用于登录,一次用于注销).我试过顶级命中聚合和排序的东西,但我总是得到解析错误:/
我希望有人可以给我一个提示:)
最好的问候,Jan