Кибана 6 диапазонов дат поля сценариев - PullRequest
0 голосов
/ 07 марта 2019

Использование кибаны 6,3

Я создал это скриптовое поле, чтобы отделить только часы от YYYY-MM-DDT00: 00: 00

hour_utc:

doc['@timestamp'].date.hourOfDay

Тогда я могу создать фильтр, который делает это:

Фильтр От 6 до 22 и получение только часов 06-22 для любой даты или дат, которые я перечислю. Это прекрасно работает. НО мне тоже нужно уметь делать от 22 до 6

Если дата с 01.01.2009 по 01.04.2009, то Фильтр с 6 по 22 дает вам следующее:

01/01/2019T06:00:00 to 01/01/2019T22:00:00
01/02/2019T06:00:00 to 01/02/2019T22:00:00
01/03/2019T06:00:00 to 01/03/2019T22:00:00
01/04/2019T06:00:00 to 01/04/2019T22:00:00

Если дата - с 01 января по 01 апреля 2009 года, Фильтр с 22 по 06 дает вам следующее:

01/01/2019T22:00:00 to 01/02/2019T06:00:00
01/02/2019T22:00:00 to 01/03/2019T06:00:00
01/03/2019T22:00:00 to 01/04/2019T06:00:00

Моя проблема в том, как мне сделать 22-06?

1 Ответ

0 голосов
/ 07 марта 2019

Одним из вариантов является создание двух фильтров, объединенных в условие bool should:

  • , который выполняет от 22 до 24
  • , который выполняет от 0 до 6

Псевдопросмотр:

{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "hour": {
              "gte": 22
            }
          }
        },
        {
          "range": {
            "hour": {
              "gte": 0,
              "lte": 6
            }
          }
        }
      ]
    }
  }
}

Другой вариант - сдвинуть поле сценария на 6 часов

doc['@timestamp'].date.hourOfDay - 6

, а затем просто проверить, что оно находится в диапазоне от 16 до 24.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...