2016-06-02 3 views
1

Ive пыталась собрать гистограмму по дате составления статистики «День за месяцем» (ведра должны быть от 1 до 31).Агрегация «День месяца»

Например, говорят, что мои показатели состоят из:

LAST_MODIFIED_DATE 
------------------- 
2015-02-01 11:29 
2015-03-01 11:41 
2015-07-15 12:45 
2015-05-15 12:47 

Я хотел бы иметь возможность агрегировать его «День в месяц» таким образом, что агрегированный ResultSet будет:

Day in Month | Count  
01    | 2 
15    | 2 

Я довольно получаю:

Day in Month | Count  
01    | 1 
01    | 1 
15    | 1 
15    | 1 

который я предполагаю, агрегируется в день, а не «г ай месяца ", что здесь требуется эта функция.

Кто-нибудь знает, как его достичь, используя подход «Гистограмма даты»?

Как приложение здесь нуждается в поддержке часового пояса для всех дат, похоже, лучший способ пойти.

Благодаря

+0

Почему бы не просто с помощью ' "интервал": "день" '? – Val

+0

«День» вернет несколько цифр «01», «02» (весь путь до «31»). Каждый из них повторялся снова и снова, а не агрегировал набор результатов. –

+0

Можете ли вы показать образец ответа на то, что вы хотели бы получить? – Val

ответ

0

У вас есть два решения

  1. Вы добавить еще одно поле dayOfMonth во время индексации и вы агрегировать на этом поле
  2. Вы используете немного script, что извлечет день месяца и заполнителя на нем (примечание: вам необходимо enable dynamic scripting)

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

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

{ 
    "size": 0, 
    "aggs": { 
    "day_in_month": { 
     "histogram": { 
     "script": "doc.LAST_MODIFIED_DATE.date.getDayOfMonth()", 
     "interval": 1, 
     "order": { 
      "_key": "desc" 
     } 
     } 
    } 
    } 
} 

UPDATE

Существует поддержка часовых поясов с date_histogram aggregation

{ 
    "size": 0, 
    "aggs": { 
    "day_in_month": { 
     "date_histogram": { 
     "field": "LAST_MODIFIED_DATE", 
     "interval": "day", 
     "time_zone": "+02:00", 
     "format": "dd", 
     "order": { 
      "_key": "desc" 
     } 
     } 
    } 
    } 
} 
+0

Hi Val. Спасибо за ваш ответ. Мы используем номер подхода 1. Проблема с обоими подходами заключается в том, что они не поддерживают функцию часового пояса ... –

+0

С подходом номер один вам необходимо применить информацию о часовом поясе во время индексации 'dayOfMonth'. При подходе номер 2 в сценарий также можно включить логику часового пояса. Возможно, если вы объясните немного больше, каковы ваши временные ограничения, мы можем что-то понять. – Val

+0

Любое повезло с этим? – Val

Смежные вопросы