Эластичный поиск итеративный запрос - PullRequest
0 голосов
/ 22 мая 2019

Я хочу запросить эластичный поиск для бизнес-логики.Я не уверен, может ли это быть достигнуто через ES или нет.Проверил на форуме и прочитал документацию ES, не нашел ничего релевантного.

id  event   starttime             endtime               duration
1   mov     2019-05-20 02:00:00   2019-05-20 03:00:00   60
1   stop    2019-05-20 03:00:01   2019-05-20 03:10:01   10
1   mov     2019-05-20 03:10:02   2019-05-20 03:50:00   40
1   stop    2019-05-20 03:50:01   2019-05-20 04:30:00   40
1   mov     2019-05-20 04:30:01   2019-05-20 04:50:00   20
2   mov     2019-05-20 01:00:00   2019-05-20 02:30:00   90
2   stop    2019-05-20 02:30:01   2019-05-20 02:45:00   15
2   mov     2019-05-20 02:45:01   2019-05-20 03:50:00   65
2   stop    2019-05-20 03:50:01   2019-05-20 04:30:00   40
2   mov     2019-05-20 04:30:01   2019-05-20 04:50:00   20

Мне нужен вывод строк, где 2 движения имеют разницу менее 15 минут: -

id  event   starttime             endtime               duration
1   mov     2019-05-20 02:00:00   2019-05-20 03:00:00   60
1   mov     2019-05-20 03:10:02   2019-05-20 03:50:00   40

Я написал этот запрос: -

{
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "id": "1"
                    }
                },
                {
                    "term": {
                        "event": "mov"
                    }
                }
            ],
            "filter": {
                "range": {
                    "startevent": {
                        "gte": "2019-05-20T00:00:00.000Z",
                        "lte": "2019-05-20T23:59:59.000Z"
                    }
                }
            }
        }
    },
    "sort": {
        "startevent": {
            "order": "asc"
        }
    },
    "aggs": {
        "sumodo": {
            "sum": {
                "field": "odo"
            }
        }
    }
}

Этот запрос дает мне все движения, но я просто хочу mov, где разница во времени между двумя последовательными движениями меньше, чем 15.

Этов основном результаты поиска на основе итерации.это возможно в ES?

Спасибо,

...