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 のバグであり、実際にはすべきではないパッケージ内のドメイン タイプをスキャンしているように見えます。私はデータをファイルしました-?? あなたのために。また、別のパッケージを明示的に構成する必要がないように、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 に答える