在运行时创建新的 SOLR 集合

Create new SOLR collection at runtime

我正在使用带有 JAVA spring 启动应用程序的 SOLR 7.1.0 服务器。 与我使用的 SOLR 服务器通信 "springframework.data.solr" 我有一个 "template" 模式,我想在运行时从中创建新的核心。

我想要实现的目标是为每个客户创建一个新的核心,同时保持架构相同。

这是我的 SolrConfig 的样子:

@Configuration
@EnableSolrRepositories(basePackages = "com.my.repository", multicoreSupport = true)
@ComponentScan
public class SolrConfig {

    @Bean
    public SolrClient solrClient() {
        return new HttpSolrClient("http://localhost:8983/solr");
    }

    @Bean
    @Scope("prototype")
    public SolrTemplate solrTemplate(SolrClient client) throws Exception {
        return new SolrTemplate(client);
    }
}

我的存储库界面:

public interface OpenItemsDebtorsRepository extends CustomOpenItemsDebtorsRepository, SolrCrudRepository<OpenItemDebtor, String> {
    void setCore(String core);

    @Query("orderNumber:*?0*~")
    List<OpenItemDebtor> findByOrderNumber(String orderNumber);
}

我正在寻找这样的东西:

solrTemplate.CreateNewCore(String coreName)

你有什么建议吗?

我强烈建议为您的 spring 引导项目使用本机 Solr 客户端 (SolrJ)。创建一个服务组件,为您提供 Solr 服务器 (CLoudSolrClient) 的实例。

SolrJ 拥有创建和管理核心和集合所需的所有组件。

我知道这不是一个直接的答案,但我希望这对您有所帮助。