Spring 数据 Elasticsearch 中的 DataTableRepository

DataTableRepository in Spring data Elasticsearch

目前,我们正在使用 spring 数据 JPA 和 MySql 数据库,DataTabaleRepository which works well with JPA. Now we are moving our data to Spring data elasticserch but DataTabaleRepository 无法使用它。是否有任何替代方案,或者我如何为此实现自定义存储库?

spring-data-jpa-datatables 没有实现对 ElasticsearchRepository 的支持,正如您所说并使用 API 规范 Spring Data for Elasticsearch 没有实现,因此扩展它需要一些工作.

您需要做的是使用相同的方法创建您自己的 ElasticsearchRepositoryFactoryBean (ie. ElasticsearchDataTablesRepositoryFactoryBean) and your own implementation of AbstractElasticsearchRepository that implements the specifics of spring-data-jpa-datatables just like DataTablesRepositoryImpl. You should also define your own DataTablesRepository(扩展 ElasticsearchRepository 的 ElasticsearchDataTablesRepository)。

org.springframework.data.jpa.datatables.mapping 类 可以重复使用,但是你必须重新创建在 SpecificationFactory for elasticsearch using QueryBuilders 中找到的逻辑,这将是我想象中最耗时的部分。

完成后,您可以像 spring-data-jpa-datatables 所描述的那样使用 @EnableElasticsearchRepositories 即:

@EnableElasticsearchRepositories(repositoryFactoryBeanClass = ElasticsearchDataTablesRepositoryFactoryBean.class))

并使用 ElasticsearchDataTablesRepository 接口扩展您的存储库,一切顺利。

作为参考,您应该查看 SpecificationFactory and AbstractElasticsearchRepository (the search method) and get familiar with Elasticsearch QueryBuilders