在SolrCloud案例中使用嵌入式SolrServer

在SolrCloud案例中使用嵌入式SolrServer,solr,solrj,solrcloud,Solr,Solrj,Solrcloud,我目前正在构建一个负载平衡的应用程序(外部通过Apache),它启动一个Solr4.2实例(或者更具体地说是一个CoreContainer)。我想设置一个SolrCloud,它跨越我的应用程序的所有实例(包括副本等)。我知道如何使用所需的Zookeeper集合等设置这些服务器 我的问题与我与SolrCloud互动的方式有关。这就是: 我的自定义应用程序收到一个请求,根据该请求需要更新SolrCloud中的信息 因为我启动了嵌入应用程序的Solr实例,所以我可以使用EmbeddedSolrSer

我目前正在构建一个负载平衡的应用程序(外部通过Apache),它启动一个Solr4.2实例(或者更具体地说是一个CoreContainer)。我想设置一个SolrCloud,它跨越我的应用程序的所有实例(包括副本等)。我知道如何使用所需的Zookeeper集合等设置这些服务器

我的问题与我与SolrCloud互动的方式有关。这就是:

  • 我的自定义应用程序收到一个请求,根据该请求需要更新SolrCloud中的信息

  • 因为我启动了嵌入应用程序的Solr实例,所以我可以使用EmbeddedSolrServer与索引交互,但是:这是与SolrCloud交互的正确方法吗?或者,这种方法是否绕过了Solr采用的整个集群方法,而我最好将我的应用程序与SolrCloud集群分离,并使用CloudSolrServer


提前谢谢

仅出于调试目的,我不喜欢使用
EmbeddedSolrServer
。如果您尝试立即访问应用程序和管理控制台中的索引,则使用
EmbeddedSolrServer
会抛出一个
LockActainFailedException


实际上,有一种方法可以使用Solr测试模块在应用程序中创建嵌入式Solr云

<!-- Solr Test Framework -->
<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-test-framework</artifactId>
    <version>6.6.1</version>
    <scope>test</scope>
</dependency>

org.apache.solr

它非常有用。

我最终基本上分离了应用程序,因为正如您所指出的,使用EmbeddedSolrServer会带来额外的缺点(特别是在集群方面)