我开始了一个项目,我使用Mongo,Elasticsearch和spring boot。
无论使用哪种技术,项目都可以正常运行。然而,两者在一起,他们发生冲突。我看到这篇特别的文章似乎与我的问题相似。 https://jira.spring.io/browse/DATAES-57 所以我试了一下,问题仍然存在。
我把它们放在Main类
上@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)
每个存储库类型的扫描应该是分开的,但显然不是。知道该怎么办吗?
答案 0 :(得分:1)
这显然是Spring Data Elasticsearch中的一个错误,因为它似乎扫描了它实际上不应该包的域类型。我为你提交了DATAES-??。此外,我提交了一张票据,以便Spring Data Elasticsearch支持新的多商店配置改进,因此您不必显式配置单独的包。
另外,如果您设置@EnableMongoRepositories
,则不需要排除自动配置,因为它会自动禁用Spring Boot的自动配置。
答案 1 :(得分: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>