Пример, с которым пришлось столкнуться. Исходная задача – документы с датой после текущей сортировать в одном порядке, а документы с датой до текущей – в другом. Все в пределах одного запроса.
sort: { "_script": { "type": "number", "order": "asc", "script": { "inline": "if(doc['start_date'].value-cur<0){return cur+abs(doc['start_date'].value-cur);}else{return doc['start_date'].value-cur;}", "params": { "cur": elasticUtil.getNowMilliseconds() } } } }
Таким образом документы с датой до текущей помещаются в конец в порядке удаления даты от текущей. А документы с датой после текущей ставятся в начало в порядке возрастания даты. Такие дела =)