Cloud Solr Server:找不到集合:入门

CloudSolrServer : Could not find collection : gettingstarted

我在尝试使用 CloudSolrServer 将文档上传到 SolrCloud 时遇到以下异常。

Exception in thread "main" org.apache.solr.common.SolrException: Could not find collection : gettingstarted
    at org.apache.solr.common.cloud.ClusterState.getCollection(ClusterState.java:162)
    at org.apache.solr.client.solrj.impl.CloudSolrServer.directUpdate(CloudSolrServer.java:305)
    at org.apache.solr.client.solrj.impl.CloudSolrServer.request(CloudSolrServer.java:533)
    at org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:124)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:116)
    at org.apache.solr.client.solrj.SolrServer.add(SolrServer.java:102)
    at Test.addDocumentSolrCloud(Test.java:265)
    at Test.main(Test.java:284)

该集合存在,我可以使用 Solr admin 进行查询。并且还能够使用 HttpSolrServer 上传文档(单实例 - 非云模式)。

我正在使用以下代码片段

CloudSolrServer server = new CloudSolrServer("localhost:2181");
            server.setDefaultCollection("gettingstarted");
            SolrInputDocument doc = new SolrInputDocument();
            doc.addField("id", id);
            doc.addField("name", name);

            server.add(doc);

            server.commit();

不确定我错过了什么。我的 Zookeeper 在外部 运行 在同一台机器上,其中两个 solr 云节点都是

我能找出问题所在。事实上 cluster/cloud 配置正确,但 SolrJ-4.x 不能与 Solr 5.0.0 一起使用;特别是 Cloud Solr API;除了云之外,使用 HttpSolrServer 的其他查询也在产生结果。

我切换到 SolrJ-5.0.0 并将代码段修改如下:

CloudSolrClient cloudSolrClient = new CloudSolrClient("localhost:2181") ;
cloudSolrClient.setDefaultCollection("gettingstarted");

SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", id);
doc.addField("name", name);

cloudSolrClient.add(doc);
cloudSolrClient.commit();

API 是 changed/refactored

阿德南