如何使用Solr在多个核心之间通过一次调用删除文档?
我使用的是6个核心,它们构成了我索引的全部(800万个文档,分布在6个核心上)。如果我想删除一个文档(比如deleteById或deleteByQuery),似乎我必须进行6次delete调用,因为我永远不知道特定文档位于哪个核心。这是正确的吗 当我搜索时,我可以给搜索一个'shards'参数,Solr将搜索所有核心。删除时,此道义似乎不正确如何使用Solr在多个核心之间通过一次调用删除文档?,solr,Solr,我使用的是6个核心,它们构成了我索引的全部(800万个文档,分布在6个核心上)。如果我想删除一个文档(比如deleteById或deleteByQuery),似乎我必须进行6次delete调用,因为我永远不知道特定文档位于哪个核心。这是正确的吗 当我搜索时,我可以给搜索一个'shards'参数,Solr将搜索所有核心。删除时,此道义似乎不正确 有没有一种方法可以通过跨多个核心的一次调用来删除文档?看起来您可以启用以返回在查询过程中找到文档的碎片。通过利用这一点,您可以查询要删除的文档,从结果中获
有没有一种方法可以通过跨多个核心的一次调用来删除文档?看起来您可以启用以返回在查询过程中找到文档的碎片。通过利用这一点,您可以查询要删除的文档,从结果中获取碎片id(在您的案例中为core),并将delete命令发送到相应的core。当然,这在开始时是一个额外的查询,但是您只需要为每个文档发出一个删除请求,而不是为每个核心发出一个删除请求 文档中有一点关于设置的内容,所以我做了一些挖掘,我认为应该将以下内容添加到solrconfig.xml文件中以启用此功能:
<transformer name="shard"
class="org.apache.solr.response.transform.ShardAugmenterFactory"/>
通过查看数据源,it将检测请求中是否使用了碎片,并在响应中启用碎片输出。唉,先生,经过一些实验,我发现这是一个4.0功能。我一直在使用Solr3.6,直到我们可以将索引升级到Solr4.x可以处理的新版本。这只是为可能遇到此问题的人提供的更新。我将我们的环境更新为Solr4.x,这个答案是正确的。它起作用了。