- 实现思路
- 参数获取:从外部配置源(如配置文件、数据库、分布式配置中心,如 Apollo、Spring Cloud Config 等)获取分页参数(如页码
page
、每页数量 size
)和排序规则(如按某个字段升序或降序,例如 sortField:asc
或 sortField:desc
)。
- 构建查询请求:在代码中根据获取到的参数构建 ElasticSearch 查询请求。对于分页,设置
from
和 size
参数;对于排序,使用 SortBuilders
构建排序条件。
- 执行查询:使用 ElasticSearch 客户端执行构建好的查询,并处理返回结果。
- 主要 API
- 分页:
- Java High - Level REST Client 中,使用
SearchRequest
的 source
方法设置查询源,在 SearchSourceBuilder
中通过 from(int from)
设置从结果集的第几项开始(从 0 开始),size(int size)
设置返回的文档数量。例如:
SearchRequest searchRequest = new SearchRequest("your_index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.from(page * size);
searchSourceBuilder.size(size);
searchRequest.source(searchSourceBuilder);
- 排序:
- 使用
SortBuilders
构建排序条件。例如,按 price
字段降序排序:
SortBuilder sortBuilder = SortBuilders.fieldSort("price").order(SortOrder.DESC);
searchSourceBuilder.sort(sortBuilder);
- 配置管理相关:
- 如果使用配置文件,在 Java 中可以使用
Properties
类加载配置文件,如:
Properties properties = new Properties();
try (InputStream inputStream = new FileInputStream("config.properties")) {
properties.load(inputStream);
String pageStr = properties.getProperty("page");
String sizeStr = properties.getProperty("size");
String sortField = properties.getProperty("sortField");
String sortOrder = properties.getProperty("sortOrder");
} catch (IOException e) {
e.printStackTrace();
}
- 如果使用分布式配置中心,以 Apollo 为例,需要引入 Apollo 相关依赖,在代码中通过 `Config` 获取配置值。例如:
Config config = ConfigService.getAppConfig();
String pageStr = config.getProperty("page", "0");
String sizeStr = config.getProperty("size", "10");
String sortField = config.getProperty("sortField", "default_field");
String sortOrder = config.getProperty("sortOrder", "asc");