我的集合分布在多个solr云节点上。要在模式中禁用uniqueKey,我还在solrconfig.xml中禁用QueryElevationComponent。
<!--
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>
-->
配置在未分配的集合中正常工作(1个分片,1个rf)。但是如果分片数* rf大于1,则会出现问题。当我对分布式集合执行查询时,solr会抛出异常。
显示java.lang.NullPointerException at org.apache.solr.handler.component.QueryComponent.createMainQuery(QueryComponent.java:852) at org.apache.solr.handler.component.QueryComponent.regularDistributedProcess(QueryComponent.java:721) 在org.apache.solr.handler.component.QueryComponent.distributedProcess(QueryComponent.java:674) 在org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:345) 在org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:154)
Solr不会抱怨索引。只有查询才有问题。
答案 0 :(得分:2)
uniqueKey是必需的。如 它可能会 在SolrCloud中进行路由并且文档替换通常会失败。
如果您在云模式下使用solr,请在架构中启用uniqueKey。