0

我开始了一个项目,其中我同时使用了 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 { … }

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

该类SearchiziUsercom.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)

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

4

2 回答 2

1

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

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

于 2014-11-30T12:59:28.570 回答
0

我遇到了这个异常,我通过更改 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>
于 2015-05-11T11:08:20.237 回答