【问题标题】:SOLR configuration for Multiple Environments多环境的 SOLR 配置
【发布时间】:2016-05-27 13:36:02
【问题描述】:

我是 SOLR 的新手,但我已经设置了 SOLR 云并设置了核心“participant_dev”。我们有多个环境,即 CI、Dev、QA、UAT 和 Prod。

对于单核来说,配置就足够简单了。在 Spring Boot 应用程序 yaml 中添加 solr 服务器 url,如下所示

spring:
  data:
    solr:
      host: server url

solr 文档用

注释
@SolrDocument(solrCoreName = "participant_dev")
public class Solr Participant{

     ....
}

这可行,但现在的要求是随着应用程序移动到不同的环境,我必须设置 solr 核心,如“participant_ci”、“participant_qa”、“participant_uat”等。您能否建议如何根据环境更改 solr 核心名称。以便, 在 CI 中,

@SolrDocument(solrCoreName = "participant_ci")
public class Solr Participant{

     ....
}

In QA,

@SolrDocument(solrCoreName = "participant_qa")
public class Solr Participant{

     ....
}

【问题讨论】:

    标签: java solr solrcloud


    【解决方案1】:

    您可以通过在 Application 类中创建 solr 客户端 bean 并删除 @SolrDocument 注释来进行设置。所以默认集合将是指定的。

    @Bean
        public SolrClient solrClient()
        {
            CloudSolrClient client = new CloudSolrClient(env.getRequiredProperty("spring.data.solr.zk-host"));
            client.setDefaultCollection("participant_"+env.getActiveProfiles()[0]);
            return client;
        }
    

    另一种选择是创建自定义存储库,但这会添加大量不需要的代码。

    【讨论】:

    • 感谢您的回复。但是,如果我的应用程序使用了多个集合,这将如何工作??
    • 有没有办法做到@SolrDocument(solrCoreName = "${solrcore}") 并从属性文件中读取solrcore?
    • 我尝试了同样的方法,但没有找到任何东西.. 找不到在运行时定义集合名称的方法。
    • 刚刚在 spring solr jira 中找到了这张票。 jira.spring.io/browse/…
    猜你喜欢
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多