我有 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)为什么某些文档的更新失败。
答案 0 :(得分:0)
对于问题1,请查看此文章 http://searchhub.org/2013/06/13/solr-cloud-document-routing/
我们的想法是,您可以通过在此模式后生成Id字段来告诉SolrCloud将一些文档放在一起 shard_key!DOCUMENT_ID
共享shard_key的所有内容都将放在同一个分片中
对于问题2,我遇到了同样的问题,我通过清理Zookeeper存储的配置来修复它
此致 兰德尔罗萨莱斯