Слияние результата doc_count из ключевых блоков - PullRequest
1 голос
/ 22 октября 2019

У меня запрос типа

'aggs' => [
                'deadline' => [
                    'date_histogram' => [
                        'field' => 'deadline',
                        'interval' => 'month',
                        'keyed' => true,
                        'format' => 'MMM'
                    ]
                ]
            ]

В результате я получаю контейнеры с ключами в качестве названий месяцев.

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

Я хочу, чтобы результаты, в которых число документов предыдущего сегмента перезаписано, слились с количеством следующего следующего документа.

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

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

{
  "size": 0,
  "aggs": {
    "deadline": {
      "histogram": {
         "script":  { "inline" : "return doc['deadline'].value.getMonthOfYear()" },
        "interval": 1
      }
    }
  }
}

Создание отдельного поля месяца будет иметь лучшую производительность

0 голосов
/ 22 октября 2019

Замените формат с MMM на YYYY-MMM, как показано ниже:

'aggs' => [
                'deadline' => [
                    'date_histogram' => [
                        'field' => 'deadline',
                        'interval' => 'month',
                        'keyed' => true,
                        'format' => 'YYYY-MMM'
                    ]
                ]
            ]

После этого вы можете управлять процессом объединения на уровне приложения

...