Использование гистограммы дат в Elasticsearch для подсчета последовательной активности

Я индексирую данные журнала доступа Tomcat в Elasticsearch (1.7.3). Документы, с которыми я имею дело, имеют концепцию длительности, представленную как время окончания и продолжительность в миллисекундах (время начала можно рассчитать, хотя я также могу его сохранить, если это поможет решить мою проблему). Например:

{
  ztime: "10-17-2015T04:05:00.000+02:00",
  duration: 4500,
  thred: "http-nio-8080-exec-14"
},
{
  ztime: "10-17-2015T04:07:42.227+02:00",
  duration: 3100,
  thred: "http-nio-8080-exec-25"
}

Моя цель — создать гистограмму, на которой я каждую секунду показываю, сколько существует потоков.

Я подумал об использовании date_histogram, который будет объединять мои документы в сегменты по 1 секунде.

GET /mindex/mtype/_search?search_type=count
{
  "aggs": {
      "threads_per_hr": {
        "date_histogram": {
          "field": "ztime",
          "interval": "1s",
          "min_doc_count": 1
        },
       "aggs": {
          "per_hr_threads": {
             "cardinality": {
                "field": "thread"
             }
          }
       }
      }
  }
}

однако, таким образом, каждый поток будет сегментирован только один раз.

Мне нужно, чтобы каждый документ был разделен на несколько сегментов. Например, мне нужно, чтобы первый документ был разбит на сегменты 04:05:00.000, 04:05:01.000, 04:05:02.000, 04:05:03.000.

Какой тип запроса (Java API и/или REST API) поможет мне достичь этой цели?


person Tsiyona Dershowitz    schedule 12.11.2015    source источник


Ответы (1)