2016-10-25 17 views
0

我有分佈在多個solr雲節點上的集合。要在模式中禁用uniqueKey,我還要在solrconfig.xml中禁用QueryElevationComponent。在Solr Cloud中,QueryElevationComponent在分佈式集合中是強制的嗎?

<!-- 
    <searchComponent name="elevator" class="solr.QueryElevationComponent" > 
    <str name="queryFieldType">string</str> 
    <str name="config-file">elevate.xml</str> 
    </searchComponent> 
--> 

在未分配集合(1 shard,1 rf)中配置工作正常。但是,如果碎片* rf的數量大於1,則會發生問題。當我執行分佈式集合的查詢時,solr會拋出異常。

在org.apache.solr.handler.component.QueryComponent.createMainQuery(QueryComponent.java:852) 在org.apache.solr.handler.component.QueryComponent.regularDistributedProcess顯示java.lang.NullPointerException (QueryComponent的.java:721) 在org.apache.solr.handler.component.QueryComponent.distributedProcess(QueryComponent.java:674) 在org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:345) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:154)

Solr不會抱怨索引。只有查詢是問題。

回答

1

uniqueKey是必需的。作爲 它可能會 在SolrCloud中進行路由並且文檔替換通常會失敗。

如果您在雲模式下使用solr,請在模式中啓用uniqueKey。

+0

是的,你是對的。堆棧的最後一部分(堆棧跟蹤上的最上面一行)如下所示: –

+0

String keyFieldName = rb.req.getSchema()。getUniqueKeyField()。getName(); 我猜getUniqueKeyField()返回null並且getName()拋出NullPointerException。 –

+0

向上投票/接受,如果你發現我的答案有用。謝謝 – vinod