【发布时间】:2021-04-03 21:34:12
【问题描述】:
我有一个连接到 ElasticSearch 集群的 Spring Boot 应用程序,我正在对其执行以下操作:
@Autowired
private ElasticsearchOperations operations;
public Page<Metadata> search(Request request){
Query query = this.queryBuilder(request);
SearchHits<Metadata> hits = operations.search(query, Metadata.class);
\\ some code to convert SearchHits<Metadata> to Page<Metadata> type
}
元数据是我的自定义实体,查询构建器是我定义的另一个函数,它在运行时返回弹性搜索查询类型。 问题是,我需要在返回这些传入数据之前对其进行分页。我查看了 spring data elasticsearch 的整个官方文档,但没有找到任何分页结果的示例。事实上,我在互联网上任何地方都能找到的唯一分页示例是使用 spring 存储库搜索方法,就像这样,
Page<Metadata> page = repository.search(query, PageRequest.of(0,1));
但该方法现在在 4.x 版本的包中已弃用。
我正在使用的查询是由另一个函数(queryBuilder 函数)动态构建的,它取决于传入的请求参数,因此在存储库接口上定义方法是不可能的,因为它需要我为每个组合定义方法参数并检查每次与 if-else 条件块一起使用的参数。
有没有办法从 ElasticSearchOperations 接口方法返回 Page
非常感谢任何帮助。
【问题讨论】:
标签: java spring elasticsearch spring-data-elasticsearch data-paging