0

我们有大量的 solr 分片,并且正在尝试设置多级聚合器。我的理解是,一个聚合器与其关联的核心不应超过 200 个。我们目前的计划是我们的第一级聚合器每个都在 100 个内核上工作。然后,我们将有另一个级别的聚合器将这些聚合在一起。到目前为止,这对我们不起作用,当我们查询第二级时,我们会收到 500 个内部服务器错误。深入研究这一点,我们发现我们的一级聚合器是给 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,但我不确定该“ids”参数应该做什么。如果我将相同的查询直接插入到 1 级聚合器中,我会得到相同的错误,但是如果我只给它一个 doc 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=*确实按预期返回结果。

4

1 回答 1

0

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

于 2013-01-18T09:27:40.647 回答