Elastic-Search count Агрегирование по разнице во времени между двумя полями
Я пытаюсь посчитать суммарную разницу во времени (в минутах) между двумя полями даты в документах с эластичным поиском в почасовом режиме.
Документы в упругом поиске выглядят так:
[
{
"name": "rakesh",
"age": "26",
"email": "rakesh@gmail.com",
"createdDate": "1549458543000",
"updatedDate": "1549458723000"
},
{
"name": "sam",
"age": "24",
"email": "samjoe@elastic.com",
"createdDate": "1549458543000",
"updatedDate": "1549458723000"
},
{
"name": "joseph",
"age": "26",
"email": "joseph@gmail.com",
"createdDate": "1549458543000",
"updatedDate": "1549458723000"
},
{
"name": "genny",
"age": "24",
"email": "genny@hotmail.com",
"createdDate": "1549458543000",
"updatedDate": "1549458723000"
}
]
Используя вышеприведенные документы, нам нужно получить разницу от updatedDate и createDate и подсчитать количество документов, имеющих одинаковую разницу во времени и составленных в один и тот же час.
Из приведенных выше примеров данных нам нужно извлечь вывод как -
for hour 1549458000000 there are 4 documents which are updated within the 4 minutes
of time.
Я могу получить TimeDiff с помощью поля скрипта
"script_fields" : {
"timeDiff" : {
"script" : "doc['updatedDate'].value -
doc['createdDate'].value"
}
}
и подсчитать агрегацию я пытался
{
"size": 0,
"aggs": {
"hour": {
"date_histogram": {
"field": "createdDate",
"interval": "hour",
"time_zone": "Asia/Calcutta",
"min_doc_count": 1
},
"aggs": {
"mail_count": {
"value_count": {
"field": "email"
}
}
}
}
},
"query": {
"bool": {
"must": []
}
}
}
С помощью вышеуказанного запроса я могу получить общее количество документов за этот конкретный час. Есть ли в любом случае объединить эти два выхода в один.
заранее спасибо