我通过运行包含的示例bin/solr -e cloud来启动Solrcloud,在这种情况下,我设法启动了三个节点的Solr云并创建了gettingstarted集合:

http://localhost:8983/solr/admin/collections?action=CREATE&name=gettingstarted&numShards=3&replicationFactor=2&maxShardsPerNode=2&collection.configName=gettingstarted

我认为它带有在端口9983上运行的嵌入式Zookeeper,因为在启动云时我看到了以下输出:
...
Starting up Solr on port 7574 using command:
bin/solr start -cloud -p 7574 -s "example/cloud/node2/solr" -z localhost:9983
Waiting up to 30 seconds to see Solr running on port 7574 [/]
...

但是,当我尝试使用SolrJ连接到SolrCloud时,它失败并显示以下错误消息:
Exception in thread "main" org.apache.solr.common.SolrException: Cannot connect to cluster at localhost:9983/solr: cluster not found/not ready

solr - Solrj无法从Solr Cloud示例连接到Zookeeper-LMLPHP

谁能帮我了解这里的事吗?

最佳答案

该代码失败,因为您试图将CloudSolrServer指向一个不存在的znode。
您的zkhost没有配置/solr chroot。配置似乎存储在根节点上。

所以换行

String zkHostString = "localhost:9983/solr";


String zkHostString = "localhost:9983";

并且您的代码应该可以正常工作。

10-08 01:43