#java #spring #spring-boot #elasticsearch
#java #spring #spring-boot #elasticsearch
Вопрос:
Для сортировки по одному полю я использую этот код
searchSourceBuilder.sort(SortBuilders.fieldSort("count").order(SortOrder.DESC));
но теперь мне нужно добавить условие, подобное этому
searchSourceBuilder.sort(SortBuilders.fieldSort(count <= 0 ? "visitor":"visitor" * "count").order(SortOrder.DESC));
Я не получаю никакой подсказки для этого. Возможно ли это в elasticsearch или мне нужно сделать это другим способом?
Ответ №1:
Что вам нужно использовать, так это SortBuilders.scriptSort()
(сортировка на основе скриптов), например:
Script script = new Script( "doc.count.value <= 0 ? doc.visitor.value : doc.visitor.value * doc.count.value");
SortBuilders.scriptSort(script, ScriptSortType.NUMBER).order(SortOrder.DESC);