Elasticsearch - скриптовая сортировка по полю дат (дат) по возрастанию с определенной входной датой - PullRequest
1 голос
/ 18 июня 2019

Предположим, у меня есть такой документ (события):

[
    {
        "title": "Foo",
        "dates": [
            "2019-07-01",
            "2019-07-15",
            "2019-08-01"
        ]
    },
    {
        "title": "Bar",
        "dates": [
            "2019-07-18"
        ]
    }
]

И я хочу выполнить поиск, который найдет все события, происходящие в данном диапазоне дат, поэтому я ищу все происходящие событиямежду 10 июля (2019-07-10) и 10 августа (2019-08-10).

Запрос не будет проблемой, но если я хочу отображать события в порядке возрастания(поэтому событие "Foo" ранжируется раньше, потому что 15 июля наступает раньше 18-го) - как мне правильно это отсортировать?

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

Могу ли я использовать «поле сценария» и передать мои fromDate и toDate, чтобы скопировать отфильтрованные даты в новое поле (скажем, validDates) и использовать поле THAT длясортировка?

КСТАТИ: индекс будет содержать только несколько тысяч событий.

ОБНОВЛЕНИЕ:

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

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