java - Spring data Elasticsearch 中的 DataTableRepository

标签 java spring spring-data spring-data-jpa spring-data-elasticsearch

目前,我们使用 Spring Data JPA 和 MySql 数据库 DataTabaleRepository与 JPA 配合良好。现在我们正在将数据转移到Spring data elasticserch,但是DataTabaleRepository不与此合作。有没有其他选择,或者我如何为此实现自定义存储库?

最佳答案

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

您需要做的是创建自己的ElasticsearchRepositoryFactoryBean (即 ElasticsearchDataTablesRepositoryFactoryBean)和您自己的 AbstractElasticsearchRepository 实现它实现了 spring-data-jpa-datatables 的细节,就像 DataTablesRepositoryImpl 一样。您还应该定义自己的 DataTablesRepository (扩展 ElasticsearchRepository 的 ElasticsearchDataTablesRepository)使用相同的方法。

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

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

@EnableElasticsearchRepositories(repositoryFactoryBeanClass = ElasticsearchDataTablesRepositoryFactoryBean.class))

并使用 ElasticsearchDataTablesRepository 接口(interface)扩展您的存储库,然后就可以开始了。

作为引用,您应该查看 SpecificationFactoryAbstractElasticsearchRepository (搜索方法)并熟悉Elasticsearch QueryBuilders .

关于java - Spring data Elasticsearch 中的 DataTableRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072324/

相关文章:

spring - 是否可以使 spring 安全 session 无效?

java - Spring Boot中的分页循环关联数据

java - 我可以在没有 Spring Boot 的情况下使用 Spring Data 吗?

spring-mvc - @RestController和@RepositoryRestController之间的区别

java - 当类是spring bean时,Eclipse类加载断点不会被触发

java - 如何使用Spring JPA查询名称约定来查询通配符

java - 将多个属性的 Jackson 自定义反序列化器转换为值对象类

java - nextDouble() 在我输入 double 值时抛出 InputMismatchException

java - 将 jpeg/png 转换为 java 中的像素数组

java - 警告记录安全信息