2012-07-12 27 views
0

我們有大量的solr碎片,並且正在嘗試設置多層次的聚合器。我的理解是,一個聚合器應該有不超過200個與之相關的核心。我們目前的計劃是我們的第一級聚合器每個都有100個內核。然後,我們將有另一個級別的聚合器一起收集這些聚合器。到目前爲止,這不適合我們,當我們查詢我們的第二級時,我們得到500個內部服務器錯誤。挖掘到這一點,我們發現我們的第一級聚合器是NPE。我們還發現有一些查詢翻譯正在進行。舉例來說,我們給我們的2級聚合是這樣的:ids paremeter如何在solr查詢中工作?它會幫助我調試分片問題嗎?

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級聚合,我得到了同樣的錯誤,但是如果我給它只有一個文件編號,像這樣:

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

然後,它會返回的信息!

這似乎很奇怪,但我也不確定我應該花時間試着瞭解這個ID參數如何工作。我跟着一隻紅鯡魚?

PS:http://l1agghostname:8080/solr/core-00/select?q=*確實會按預期返回結果。

回答

0

我們最終發現的是,Solr無法像這樣處理搜索。 Solr會通過堆棧發送初始查詢。然後聚合器會收集這些ID並將其發回。然後,Solr應該使用ID檢索文檔。一旦這些ID被返回,它將不能夠回憶檢索它們的路徑。它因此將查詢發送到錯誤的機器併發生錯誤。