如何编写 ES 查询来查找字段的最大值和最小值之间的差异?
我是弹性搜索的新手,在我的情况下,我将大量事件与 session_id 和时间一起提供给弹性搜索。我的事件结构是
Event_name string `json:"Event_name"`
Client_id string `json:"Client_id"`
App_id string `json:"App_id"`
Session_id string `json:"Session_id"`
User_id string `json:"User_id"`
Ip_address string `json:"Ip_address"`
Latitude int64 `json:"Latitude"`
Longitude int64 `json:"Longitude"`
Event_time time.Time `json:"Time"`
Run Code Online (Sandbox Code Playgroud)
我想根据馈送事件找到 session_id 的生命周期。为此,我可以通过以下 ES 查询检索特定 session_id 的最大 Event_time 和最小 Event_time。
{
"size": 0,
"query": {
"match": {
"Session_id": "dummySessionId"
}
},
"aggs": {
"max_time": {
"max": {
"field": "Time"
}
},
"min_time":{
"min": {
"field": "Time"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是 (max_time - min_time) 如何编写相同的 ES 查询????
到elasticsearch 1.1.1为止,无法对elasticsearch端的两个聚合函数的结果进行任何算术运算。如果您愿意,您应该从客户端执行此操作。
正如 @eliasah 所建议的那样,这不可能通过脚本实现。
在即将推出的版本中,他们可能会添加此类功能。
| 归档时间: |
|
| 查看次数: |
4083 次 |
| 最近记录: |