在solr云中更新文档4.4

时间:2014-03-10 15:11:03

标签: solr4 solrcloud

我有 solr cloud 4.4 设置两个分片。分片在两台不同的机器上。我已经使用 solr客户端4.2.0的 CloudSolrServer 成功索引了文档。但是在更新文档时,某些文档正在更新,而其他文档没有得到更新,例外情况是“ org.apache.solr.common.SolrException:在DocCollection中没有活动切片服务哈希码f02c79de(myindex)= {”其中“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();

我的问题是: 1)当文档被索引时,它是如何决定哪个文档进入哪个分片。 2)为什么某些文档的更新失败。

1 个答案:

答案 0 :(得分:0)

对于问题1,请查看此文章 http://searchhub.org/2013/06/13/solr-cloud-document-routing/

我们的想法是,您可以通过在此模式后生成Id字段来告诉SolrCloud将一些文档放在一起 shard_key!DOCUMENT_ID

共享shard_key的所有内容都将放在同一个分片中

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

此致 兰德尔罗萨莱斯