小编Jan*_*Jan的帖子

弹性(搜索):获取具有最大和最小时间戳值的文档

我遇到了搜索问题,我无法弄清楚如何做到这一点.我的文档具有以下形式:

{
"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

search elasticsearch

6
推荐指数
2
解决办法
8669
查看次数

标签 统计

elasticsearch ×1

search ×1