У меня есть следующие данные.
Product
A-DC1
ssss
A-DC3
A-DC2
У меня есть следующий метод:
public List<Product> searchAndSort(String search, Pageable pageable) {
List<Product> productList = null;
if (search != null && !search.equals("")) {
((BoolQuerBuilder)(qb)).must((Querybuilders.matchQuery("product", search)));
}
NativeSearchQueryBuilder ns = new NativeSearchQueryBuilder();
ns.withQuery(qb);
ns.withPageable(pageable);
ns.withSearchType(SearchType.QUERY_THEN_FETCH);
productList = productRep.search(ns);
return productList;
}
Параметр pageable имеет значение сортировки «product, as c» для по возрастанию и «product, des c» по убыванию.
Когда я сортирую по возрастанию, я получаю следующее:
A-DC1
A-DC2
A-DC3
ssss
Когда я сортирую по убыванию, я получаю следующее:
A-DC1
ssss
A-DC2
A-DC3
Может кто-нибудь сказать мне, почему это происходит? Кроме того, есть ли способ сделать буквенно-цифровую / натуральную сортировку в elasti c? IE Если у меня есть Pr 1, Pr 2, Pr 3, Pr 10, я хочу, чтобы он отображался в следующем порядке:
Pr 1
Pr 2
Pr 3
Pr 10
В настоящее время он показывает:
Pr 1
Pr 10
Pr 2
Pr 3