Solr4 在solr cloud 4.4中更新文档

Solr4 在solr cloud 4.4中更新文档,solr4,solrcloud,Solr4,Solrcloud,我有一个solr cloud 4.4设置了两个碎片。我已经使用solr client 4.2.0的CloudSolrServer成功地为文档编制了索引。但是,在更新文档时,一些文档正在更新,而其他文档没有更新,例外情况是“org.apache.solr.common.SolrException:DocCollection(myindex)={”中没有为哈希代码f02c79de提供服务的活动切片,其中“myindex”是我的索引的名称。 更新文件的代码如下: CloudSolrServ

我有一个solr cloud 4.4设置了两个碎片。我已经使用solr client 4.2.0的CloudSolrServer成功地为文档编制了索引。但是,在更新文档时,一些文档正在更新,而其他文档没有更新,例外情况是“org.apache.solr.common.SolrException:DocCollection(myindex)={”中没有为哈希代码f02c79de提供服务的活动切片,其中“myindex”是我的索引的名称。 更新文件的代码如下:

      CloudSolrServer server = new CloudSolrServer("myip:9983");
  server.setDefaultCollection("myindex");
      List<SolrInputDocument> solrInputDocsList = new ArrayList<SolrInputDocument>();
      SolrInputDocument solrInputDoc = new SolrInputDocument();

      List<String> servicesList = new ArrayList<String>();
      servicesList.add("hockey1");
      servicesList.add("blogger1");
      Map<String, List<String>> services = new HashMap<String, List<String>>();
      services.put("set", servicesList);
      solrInputDoc.addField("services",services);


      solrInputDoc.addField("id",id);

      solrInputDocsList.add(solrInputDoc);

      server.add(solrInputDocsList);
      server.commit();
CloudSolrServer服务器=新的CloudSolrServer(“myip:9983”);
setDefaultCollection(“myindex”);
List solrInputDocsList=new ArrayList();
SolrInputDocument solrInputDoc=新的SolrInputDocument();
列表服务列表=新的ArrayList();
服务列表添加(“曲棍球1”);
服务列表添加(“blogger1”);
Map services=newhashmap();
services.put(“set”,servicesList);
solrInputDoc.addField(“服务”,服务);
solrInputDoc.addField(“id”,id);
添加(solrInputDoc);
添加(solrInputDocsList);
commit();
我的问题是: 1) 当文档被编入索引时,它的索引方式决定了哪个文档将转到哪个碎片。
2) 为什么某些文档的更新失败。

有关问题1,请查看本文

其思想是,您可以让SolrCloud按照此模式生成Id字段,从而将一些文档放在一起 切分键!文档id

共享shard_密钥的所有内容都将放在同一个shard_密钥中

对于问题2,我也遇到了同样的问题,我通过清理Zookeeper存储的配置修复了它

问候,, 兰德尔·罗萨莱斯