【问题标题】:Conflict between Spring data MongoDb and ElasticsearchSpring数据MongoDb和Elasticsearch之间的冲突
【发布时间】:2014-11-29 03:54:01
【问题描述】:

我开始了一个项目,其中我同时使用了 Mongo、Elasticsearch 和 spring boot。

单独使用这两种技术,该项目运行良好。然而,两者结合在一起,它们就会发生冲突。我看到了这篇似乎与我的问题相似的特定文章。 https://jira.spring.io/browse/DATAES-57 所以我试了一下,问题还是存在。

我把这些放在主课上

@EnableAutoConfiguration(exclude = MongoRepositoriesAutoConfiguration.class)
@EnableMongoRepositories(basePackages = "com.searchizi.mongo.repository")
@EnableElasticsearchRepositories(basePackages = "com.searchizi.elasticsearch.repository")
@ComponentScan
public class Application implements CommandLineRunner { … }

异常跟踪的缩写形式是这样的

SearchiziUser 类在 com.searchizi.mongo.model 包中。它不在 Elasticsearch 扫描路径上。

Caused by: java.lang.IllegalArgumentException: Unable to identify index name. SearchiziUser is not a Document. Make sure the document class is annotated with @Document(indexName="foo")
    at org.springframework.util.Assert.isTrue(Assert.java:65)
    at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.getPersistentEntityFor(ElasticsearchTemplate.java:869)
    at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.createIndexIfNotCreated(ElasticsearchTemplate.java:684)
    at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.createIndex(ElasticsearchTemplate.java:135)
    at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.createIndex(AbstractElasticsearchRepository.java:80)
    at org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.<init>(AbstractElasticsearchRepository.java:72)
    at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.<init>(SimpleElasticsearchRepository.java:36)

每个存储库类型的扫描应该分开,但显然不是。知道该怎么做吗?

【问题讨论】:

    标签: spring-boot spring-data-mongodb spring-data-elasticsearch


    【解决方案1】:

    这显然是 Spring Data Elasticsearch 中的一个错误,因为它似乎会扫描实际上不应该扫描的包中的域类型。我为你提交了DATAES-??。另外,我提交了一张票,以便 Spring Data Elasticsearch 支持新的多存储配置改进,这样您就不必显式配置单独的包。

    附带说明,如果您设置@EnableMongoRepositories,则不需要排除自动配置,因为它会自动禁用 Spring Boot 的自动配置。

    【讨论】:

    【解决方案2】:

    我遇到了这个异常,我通过更改 elasticsearch 版本和 mongodb lib 版本解决了

    <!-- Spring data mongodb -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-mongodb</artifactId>
                <version>1.7.0.RELEASE</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
                <version>1.10.0.RELEASE</version>
            </dependency>
    
            <!-- mongodb java driver -->
            <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
            </dependency>
    
            <!-- ELASTICSEARCH -->
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-elasticsearch</artifactId>
                <version>1.2.0.RELEASE</version>
            </dependency>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-14
      • 2018-10-19
      • 2020-08-06
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多