Допустим, у меня есть данные, основанные на времени, например:
POST /events/_bulk?refresh
{"index":{"_id":1}}
{"timestamp": "2019-06-07T01:55:23.432+00:00", "type": "enter"}
{"index":{"_id":2}}
{"timestamp": "2019-06-07T01:58:33.100+00:00", "type": "exit"}
{"index":{"_id":3}}
{"timestamp": "2019-06-07T02:03:04.867+00:00", "type": "exit"}
{"index":{"_id":4}}
{"timestamp": "2019-06-07T02:12:11.108+00:00", "type": "enter"}
{"index":{"_id":5}}
{"timestamp": "2019-06-07T02:22:58.771+00:00", "type": "enter"}
{"index":{"_id":6}}
{"timestamp": "2019-06-07T03:37:28.844+00:00", "type": "exit"}
И я хочу сгруппировать события, которые произошли в течение 15 минут друг от друга, очень похоже на Сетка GeoTile группирует точки, которые географически расположены рядом друг с другом.
Полученный ответ будет выглядеть так:
{
...
"aggregations": {
"time-clumps": {
"buckets": [
{
"from" : "2019-06-07T01:55:23.432+00:00",
"to" : "2019-06-07T02:10:23.432+00:00",
"doc_count" : 3
},
{
"from" : "2019-06-07T02:12:11.108+00:00",
"to" : "2019-06-07T02:27:11.108+00:00",
"doc_count" : 2
},
{
"from" : "2019-06-07T03:37:28.844+00:00",
"to" : "2019-06-07T03:52:28.844+00:00",
"doc_count" : 1
}
]
}
}
}
Есть ли способ написать этот запрос в Elasticsearch?