2017-07-21 21 views
0

solrの設定を1.5.4から3.0.0.M4にアップグレードする際に問題が発生しました(2.0.0.M2へのSpringブートアップデートとともに)。複数のコアでSpring Data Solrを設定する

前の設定ファイル(春・データのSolr 1.5.4.RELEASE):

@Configuration 
@EnableSolrRepositories(value = "com.bar.foo.repository.solr", multicoreSupport = true) 
public class SolrConfiguration implements EnvironmentAware{ 

    private RelaxedPropertyResolver propertyResolver; 
    private Environment    environment; 

    @Override 
    public void setEnvironment(Environment environment) { 
     this.environment = environment; 
     this.propertyResolver = new RelaxedPropertyResolver(environment, "spring.data.solr."); 
    } 

    @Bean 
    public SolrServer solrServer() { 
     String solrHost = propertyResolver.getProperty("host"); 
     return new HttpSolrServer(solrHost); 
    } 


    @Bean(name = "core1SolrTemplate") 
    public SolrOperations core1SolrTemplate() { 
     HttpSolrServer httpSolrServer = new HttpSolrServer(propertyResolver.getProperty("host")); 
     return new SolrTemplate(httpSolrServer, "Core1"); 
    } 

    @Bean(name = "core2SolrTemplate") 
    public SolrOperations core2SolrTemplate() { 
     HttpSolrServer httpSolrServer = new HttpSolrServer(propertyResolver.getProperty("host")); 
     return new SolrTemplate(httpSolrServer, "Core2"); 
    } 
    ... 
} 

私たちは、その後、私は見、更新しようと

@Resource SolrTemplate core1SolrTemplate; 
@Resource SolrTemplate core2SolrTemplate; 

ように、コードでこれらのsolrtemplateを使用していますHttpSolrServerはもはや利用できません.SolrClientを使うべきですが、multicoreSupportを削除し、テンプレートのコアを宣言する能力を持っていると、コアごとにテンプレートを持つ方法を知ることはできません。クエリ?)

ここに私の現在の非稼働設定です:

@SolrDocument(solrCoreName = "Core1") 
public class Foo{ 
    @Id 
    private String      id; 

    ... 
} 

とによる誤差を投げコール

core1SolrTemplate.queryForPage(simpleQuery, Foo.class) 

」:ORG

@Configuration 
@EnableSolrRepositories(value = "com.bar.foo.repository.solr") 
public class SolrConfiguration { 

    @Inject 
    private Environment    environment; 

    @Bean 
    public SolrClient solrClient() { 
     return new HttpSolrClient.Builder(environment.getProperty("spring.data.solr.host")).build(); 
    } 

    @Bean 
    public SolrTemplate solrTemplate() { 
     return new SolrTemplate(solrClient()); 
    } 

} 

当社のPOJOのように構成されています。 apache.solr.client.solrj.impl.HttpSolrClient $ RemoteSolrException:サーバからのエラーhttp://192.168.99.100:8983/solr:期待されるMIMEタイプのアプリケーション/オクテットストリームがテクスチャになったt/html。 「

solrtemplateだけで任意のコアを選択せず​​にBASEURLを呼び出しているように見えます。

は、私はまた、コアごとに特定のURLを構築するために)前とsolrClient(にパラメータを渡すなど、複数のSolrTemplateを作成しようとしたが、でしたそれを動作させるために失敗した(私は間違ってコアを指し、第二テンプレートが明らかに最初solrtemplate Beanを使用していたエラーを持っていた)。

を私はSolrのは、複数のコアを照会することができるように設定する必要がありますどのように?

現在の(2.1.4)solr doc: http://docs.spring.io/spring-data/data-solr/docs/current/reference/html/#solr.multicore

マルチコアは3.0.0.M4ドキュメントに記述されていません。 http://docs.spring.io/spring-data/data-solr/docs/3.0.0.M4/reference/html/#solr.multicore

答えて

0

私は疲れていたように見え、以下の構成が正常に動作しているようだ - の例では、いつでも

@Configuration 
@EnableSolrRepositories(basePackages={"com.example.demo.repository"}) 
public class SolrContext { 

    static final String SOLR_HOST = "solr.host"; 

    @Autowired 
    private Environment environment; 

    @Bean 
    public SolrClient solrClient() { 
     return new HttpSolrClient.Builder(environment.getProperty(SOLR_HOST)).build(); 
    } 

    @Bean 
    public SolrTemplate solrTemplate() { 
     return new SolrTemplate(solrClient()); 
    } 

    @Bean 
    public SolrTemplate core1Template() { 
     return new SolrTemplate(new HttpSolrClient.Builder(environment.getProperty(SOLR_HOST)+"/core1").build()); 
    } 

    @Bean 
    public SolrTemplate core2Template() { 
     return new SolrTemplate(new HttpSolrClient.Builder(environment.getProperty(SOLR_HOST)+"/core2").build()); 
    } 
} 

それを改善して自由に感じる: https://github.com/Farael49/spring-solr-config/blob/master/demo/src/main/java/com/example/demo/web/CoreController.java

0

は、私はあなたがマルチコア・サポートを使用するために、あなたのPOJOに@SolrDocumentアノテーションを追加する必要があると思います。議論のために下記の問題を参照してください。どのようにあなたがそれを設定しているかによって異なります。

Spring Data Solr multiple cores and repository

+0

私は私を更新しました問題を生成するpojo&solrTemplate呼び出しで質問してください。我々はすでにこれらの注釈を持っており、solr 1.5.4でうまくいきました。コアごとにテンプレートを定義することができました。しかし、SolrTemplateにはcoreNameというコンストラクタはありません。 http://docs.spring.io/spring-data/solr/docs/1.5.4.RELEASE/api/index.html?org/springframework/data/solr/core/SolrTemplate。html 対 http://docs.spring.io/spring-data/solr/docs/3.0.0.M4/api/index.html?org/springframework/data/solr/core/SolrTemplate.html &the設定はhttp://projects.spring.io/spring-data-solr/ は3.0用に廃止されました –

関連する問題