Java Solrcloud Zookeper设置:等待4000ms后未找到注册的引线,集合:c1切片:shard2

Java Solrcloud Zookeper设置:等待4000ms后未找到注册的引线,集合:c1切片:shard2,java,solr,apache-zookeeper,solrj,solrcloud,Java,Solr,Apache Zookeeper,Solrj,Solrcloud,我使用Solr4.10.3,我通过java中的嵌入式jetty服务器启动solr。我正在尝试用2个碎片(引线)配置solrcloud。我有一个外部zookeeper设置,我在启动solr时指向zookeeper实例,如下所示 System.setProperty("zkHost", "192.168.2.21:2111"); System.setProperty("numShards", "2"); System.setProperty("coll

我使用Solr4.10.3,我通过java中的嵌入式jetty服务器启动solr。我正在尝试用2个碎片(引线)配置solrcloud。我有一个外部zookeeper设置,我在启动solr时指向zookeeper实例,如下所示

        System.setProperty("zkHost", "192.168.2.21:2111");
        System.setProperty("numShards", "2");
        System.setProperty("collection.configName", "configuration1");
        System.setProperty("bootstrap_confdir","/conf/zooconf");
我有两个solr实例正在运行,一个在8983端口,另一个在8984端口。问题是,我不确定是否两个solr节点都被识别为先导。因为我是通过java启动solr的,所以无法在solr管理UI中查看状态

以下是我的solr.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<solr>
  <solrcloud>
    <str name="host">192.168.2.21</str>
    <int name="hostPort">${hostPort:8984}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:120000}</int>
    <int name="connTimeout">${connTimeout:15000}</int>
  </shardHandlerFactory>
</solr>
当我执行此操作时,C1只在一个solr实例(8983)中创建。(核心不是应该在两个solr实例的数据目录中创建的。?)。在添加文档时,会引发以下异常

等待4000ms后未找到注册的引线,集合:c1切片:shard2

这是添加文档时的clusterState:

live nodes:[192.168.2.21:8984_solr, 192.168.2.21:8983_solr] collections: {
   C1=DocCollection(C1)=   {
      "shards":{
         "shard1":{
            "range":"80000000-ffffffff",
            "state":"active",
            "replicas":{
               "core_node1":{
                  "state":"active",
                  "core":"C1",
                  "node_name":"192.168.2.21:8983_solr",
                  "base_url":"http://192.168.2.21:8983/solr",
                  "leader":"true"
               }
            }
         },
         "shard2":{
            "range":"0-7fffffff",
            "state":"active",
            "replicas":{

            }
         }
      },
      "maxShardsPerNode":"1",
      "router":{
         "name":"compositeId"
      },
      "replicationFactor":"1",
      "autoAddReplicas":"false",
      "autoCreated":"true"
   }
}
如果我在添加文档之前在另一个solr实例(8984)中创建core,它可以正常工作。。文档被编入索引并分布在2个碎片之间。我做错什么了吗?请帮帮我


提前感谢。

在创建adminRequest时,我添加了以下几行,它成功了

adminRequest.setPath("/admin/collections");
adminRequest.setNumShards(2);
以前它无法工作,因为默认路径指向旧api“/admin/cores”。我们需要确保在中提到的solrcloud操作的adminRequest对象中给出了新的api路径“/admin/collections

adminRequest.setPath("/admin/collections");
adminRequest.setNumShards(2);