В Elasti c Я хотел бы отсортировать результаты по start_date
возрастанию, но с указанием прошлых дат после наступающих дат.
Пример желаемых результатов:
[
{id: 5, start_date: '3000-01-01'},
{id: 7, start_date: '3001-01-01'},
{id: 8, start_date: '3002-01-01'},
{id: 1, start_date: '1990-01-01'},
{id: 4, start_date: '1991-01-01'},
{id: 3, start_date: '1992-01-01'},
]
Что-то подобное было бы возможно в SQL:
ORDER BY (start_date > NOW()) DESC, start_date ASC
Но я не уверен, как сделать sh это в Elasti c. Единственное, что я могу придумать, - это установить логический флаг is_upcoming
и переиндексировать его каждый день.
Также я мог бы ограничивать и разбивать на страницы количество результатов поиска, поэтому получаю их в обратном порядке start_date
упорядочить, а затем манипулировать результатами в моем коде на самом деле нереально.