如何创建可以计算时差的查询?

Fil*_*nka 16 elasticsearch

我有以下文件索引:

{name: 'Device1', type: 'start', 'eventTime': '2013-02-19 12:00:00'}
{name: 'Device2', type: 'start', 'eventTime': '2013-02-19 12:02:00'}
{name: 'Device1', type: 'stop', 'eventTime': '2013-02-19 12:45:00'}
{name: 'Device2', type: 'stop', 'eventTime': '2013-02-19 12:50:00'}
Run Code Online (Sandbox Code Playgroud)

我想创建一个查询,这将EVENTTIME的之间的时间差,通过设备名称和字段类型的问候刻面返回对我来说是新领域.对于示例,它应该是:

{name: 'Device1', 'type': 'it really doesnt matter', eventTime: 'also doesnt matter', duration: '00:45:00'}
{name 'Device2', 'type': 'it really doesnt matter', eventTime: 'also doesnt matter', duration: '00:48:00'}
Run Code Online (Sandbox Code Playgroud)

是否可以使用弹性搜索查询语言?

Aks*_*hay 7

我不相信你现在拥有每个文件的方式是可行的.如果您将文档存储为:

{name: 'Device1', startTime: '2013-02-19 12:00:00', endTime: '2013-02-19 12:45:00'}
{name: 'Device2', startTime: '2013-02-19 12:02:00', endTime: '2013-02-19 12:50:00'}
Run Code Online (Sandbox Code Playgroud)

然后,您可以返回一个时间差异的脚本字段.

{    
  "query" : {
    ...
  },
  "script_fields" : {
    "timedifference" : {
      "script" : "doc['endTime'].value - doc['startTime'].value"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)