首页 > 解决方案 > Spring Data Elastic 搜索未在 Java 中正确排序列表

问题描述

我有以下数据。

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,asc”表示升序,“product,desc”表示降序。

当我按升序排序时,我得到以下信息:

A-DC1
A-DC2
A-DC3
ssss

当我按降序排序时,我得到以下信息:

A-DC1
ssss
A-DC2
A-DC3

谁能告诉我为什么会这样?另外,有没有办法在弹性中进行字母数字/自然排序?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

标签: elasticsearchspring-data-elasticsearch

解决方案


推荐阅读