Spring Data Solr是否与zookeeper主机一起使用?

时间:2018-06-05 15:17:20

标签: spring solr apache-zookeeper spring-data-solr

我有一个spring boot应用程序,在我的属性文件中我有:

spring.data.solr.host=http://{SOLR.HOST}/solr

这很好但如果我用SOLR.HOST替换ZOOKEEPER.HOST,它会在与服务器通信时抛出I / O异常。在我看来,spring数据试图直接通过http请求命中zookeeper端点,而zookeeper不处理http请求?如果是这样,我该怎么做才能让spring数据与zookeeper一起使用?

1 个答案:

答案 0 :(得分:1)

看起来您需要使用CloudSolrClient来实例化SolrClient bean https://dzone.com/articles/spring-data-solr-cloud-zookeeper-mongodb-ubuntu-in

@Configuration
@EnableSolrRepositories(basePackages = { "ca.knc.restaurant.repository.solr" }, multicoreSupport = true)
public class SpringSolrConfig {
    @Value("${spring.data.solr.zk-host}")
    private String zkHost;
    @Bean
    public SolrClient solrClient() {
        return new CloudSolrClient(zkHost);
    }
    @Bean
    public SolrTemplate solrTemplate(SolrClient solrClient) throws Exception {
        return new SolrTemplate(solrClient);
    }
}

您也可以通过application.properties进行设置,让Spring Boot自动配置它:

  

spring.data.solr.zk-host =#ZooKeeper表单中的主机地址   HOST:PORT

https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/solr/SolrAutoConfiguration.java

否则,您可以使用LoadBalancer为Solr实例提供服务并使用常规Solr主机配置

例如,我有以下配置(yml config):

spring.data.solr.host: https://foo.bar.com/solr

foo.bar.com服务于我的一个Solr实例,其中Apache作为标准的Load Balancer。