gpt4 book ai didi

search - 弹性(搜索): Get docs with max and min timestamp values

转载 作者:行者123 更新时间:2023-11-29 02:47:49 24 4
gpt4 key购买 nike

我在搜索时遇到了问题,我不知道该怎么做。我的文档具有以下形式:

{
"timestamp":"2015-03-17T15:05:04.563Z",
"session_id":"1",
"user_id":"jan"
}

假设 session ID 的第一个时间戳是“登录”,最后一个时间戳是“注销”。我想要所有 session 的所有“登录”和“注销”文档(如果可能,按 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" }
}
}
}
}
}
}
}

但是如何获取相应的文档呢?我也不介意我是否必须进行 2 次搜索(一次用于登录,一次用于注销)。我尝试了一些 HitTest 门的聚合和排序,但我总是遇到解析错误:/

我希望有人能给我提示:)

最好的问候,简

最佳答案

这是基于 Sloan Ahrens 提出的方法的单一搜索解决方案。优点是开始和结束 session 条目在同一个桶中。

{
"aggs": {
"group_by_uid": {
"terms": {
"field": "user_id"
},
"aggs": {
"group_by_sid": {
"terms": {
"field": "session_id"
},
"aggs": {
"session_start": {
"top_hits": {
"size": 1,
"sort": [ { "timestamp": { "order": "asc" } } ]
}
},
"session_end": {
"top_hits": {
"size": 1,
"sort": [ { "timestamp": { "order": "desc" } } ]
}
}
}
}
}
}
}
}

干杯,简

关于search - 弹性(搜索): Get docs with max and min timestamp values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29169612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com