Spring Data Elasti c Поиск не сортирует список правильно в Java - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть следующие данные.

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
...