ids参数在solr查询中是如何工作的?它能帮助我调试一个分片问题吗



我们有大量的solr碎片,正在尝试设置多级聚合器。我的理解是,一个聚合器的相关核心不应超过200个。我们目前的计划是,我们的第一级聚合器每个聚合器的核心数量为100个。然后,我们将有另一个级别的聚合器来收集这些信息。到目前为止,这对我们不起作用,当我们查询第二级时,我们会得到500个内部服务器错误。深入研究这一点,我们发现我们的一级聚合器是give NPE。我们还发现有一些查询的翻译正在进行中。例如,我们给我们的2级聚合器提供了这样的东西:

http://l2agghostname:8080/solr/core-00/select?q=*

它向级别1发送以下信息:

http://l1agghostname:8080/solr/core-00/select?ids=a6_370573660942_76697809790_0,a7_370573660942_76697809790_4&wt=xml&q=*

这表明它正在接收要返回的id,但我不确定"id"参数到底应该做什么。如果我将相同的查询直接插入到级别1聚合器,我会得到相同的错误,但如果我只给它一个文档id,那么:

http://l1agghostname:8080/solr/core-00/select?ids=a6_370573660942_76697809790_0&wt=xml&q=*

然后它会返回信息!

这看起来很奇怪,但我也不确定我是否应该花时间来了解这个ids参数是如何工作的。我是在转移注意力吗?

PS:http://l1agghostname:8080/solr/core-00/select?q=*确实按预期返回了结果。

我们最终发现Solr无法处理这样的搜索。Solr将通过堆栈发送初始查询。然后,聚合器将收集ID并将其发送回。然后Solr应该使用ID来检索文档。一旦返回ID,它将无法调用路径来检索所有ID。因此,它将查询发送到错误的机器,并出现错误。

最新更新