Пример, с которым пришлось столкнуться. Исходная задача — документы с датой после текущей сортировать в одном порядке, а документы с датой до текущей — в другом. Все в пределах одного запроса.

 

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()
    }
   }
  }
 }

Таким образом документы с датой до текущей помещаются в конец в порядке удаления даты от текущей. А документы с датой после текущей ставятся в начало в порядке возрастания даты. Такие дела =)