如何从 ES 中的聚合最大值(差异)中减去聚合最小值?

Ale*_*hew 5 elasticsearch

如何编写 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 查询????

Sen*_*thy 2

到elasticsearch 1.1.1为止,无法对elasticsearch端的两个聚合函数的结果进行任何算术运算。如果您愿意,您应该从客户端执行此操作。

正如 @eliasah 所建议的那样,这不可能通过脚本实现。

在即将推出的版本中,他们可能会添加此类功能。