Elastic-Search count Агрегирование по разнице во времени между двумя полями - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь подсчитать совокупную разницу во времени (в минутах) между двумя полями даты документов упругого поиска в почасовой основе.

Документы в упругом поиске выглядят следующим образом:

  [
    {
      "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"
    }
  ]

Используя вышеуказанные документы, нам нужно получить разницу обновленных дат и созданных дат и количество документов с одинаковым временным различием, которые созданы в тот же час.

из приведенного выше примераданные, нам нужно извлечь вывод как -

 for hour 1549458000000 there are 4 documents which are updated within the 4 minutes 
 of time.

Я могу получить разницу во времени, используя поле скрипта

  "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": []
      }
    }
  }

С помощью вышеуказанного запроса я могу получить общее количество документов за определенный час.Есть ли в любом случае объединить эти два выхода в один.

Заранее спасибо

...