【问题标题】:DataTableRepository in Spring data ElasticsearchSpring数据Elasticsearch中的DataTableRepository
【发布时间】:2017-04-25 15:14:20
【问题描述】:

目前,我们正在使用带有DataTabaleRepository 的 MySql 数据库的 Spring Data JPA,它与 JPA 配合得很好。现在我们正在将我们的数据移动到 Spring data elasticserch 但DataTabaleRepository 没有使用它。是否有任何替代方案,或者我如何为此实现自定义存储库?

【问题讨论】:

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


【解决方案1】:

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 类可以重用,但您必须使用QueryBuilders 为弹性搜索重新创建SpecificationFactory 中的逻辑,这将是最耗时的第一部分想象一下。

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

@EnableElasticsearchRepositories(repositoryFactoryBeanClass = ElasticsearchDataTablesRepositoryFactoryBean.class))

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-04
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2020-01-31
    • 1970-01-01
    • 2016-05-12
    相关资源
    最近更新 更多