2017-01-18 1 views
3

wie folgtFrühling Daten solr HttpSolrClient nicht Kern Annotation von Unternehmen mit einer Konfiguration nicht verwendet

@Configuration 
@EnableSolrRepositories(basePackages={"com.foo"}, multicoreSupport=true) 
public class SolrConfig { 

    @Value("${solr.host}") String solrHost; 

    @Bean 
    public SolrClient solrClient() { 
     return new HttpSolrClient(solrHost); 
    } 

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

Ich habe eine einfache Einheit:

@SolrDocument(solrCoreName = "core1") 
public class MyEntity implements Serializable { 

Wenn SolrTemplate mit Abfragen auszuführen, ist es nicht verwenden die coreName Anmerkung auf das Dokument:

Page results = solrTemplate.queryForPage(search, MyEntity.class); 

ich Ausnahme:

org.springframework.data.solr.UncategorizedSolrException: Error from server at http://localhost:8983/solr: Expected mime type application/octet-stream but got text/html. 
[..] 
Problem accessing /solr/select 
[...] 
<title>Error 404 Not Found</title> 

Ändern der SolrTemplate Bean:

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

arbeitet

Antwort

3

Die Jungs von Feder Daten bestätigt dies ist das erwartete Verhalten und die Vorlage wird den Kern von der Einheit Anmerkung nicht lesen.
So in einer multicoreSupport=true Umgebung, wenn Sie sowohl das Repository und die Vorlage verwenden möchten, werden Sie 2 Bohnen erstellen müssen: Für das Repository die Basis-Vorlage:

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

und zum Injizieren Sie eine andere haben ein:

@Bean 
    public SolrTemplate customTemplate() { 
     return new SolrTemplate(solrClient(), "core1"); 
    } 

Natürlich, wenn Sie nicht brauchen multicoreSupport=true keine benötigt wird!

Verwandte Themen