Solr两分片RequestHandler配置异常:查询仅返回单分片数据
让Solr默认/select路径返回多分片结果的配置方法
你新增的/selectdistributed请求处理器只是添加了一个新的查询入口,原有的/select处理器并没有自动继承这个配置,所以直接访问/select仍只会查询本地分片。要实现访问第一个节点的/select就返回两个分片的合并结果,有两种可行方案:
方案一:直接修改原有/select处理器的配置
找到solrconfig.xml中原有的/select请求处理器定义,给它添加默认的shards参数,示例配置如下:
<requestHandler name="/select" class="solr.SearchHandler"> <!-- 保留原有defaults、invariants等配置 --> <lst name="defaults"> <!-- 添加默认分片参数 --> <str name="shards">127.0.0.1:8983/solr/core1,127.0.0.1:8984/solr/core1</str> <!-- 保留原有其他默认参数,比如rows、fl等 --> <int name="rows">10</int> </lst> </requestHandler>
修改后重启Solr节点,访问127.0.0.1:8983/solr/core1/select时会自动带上配置好的分片参数,返回两个分片的合并结果。
方案二:让/select继承已配置的/selectdistributed处理器
如果不想直接修改原/select的配置,可以让它继承你新增的/selectdistributed的配置,修改solrconfig.xml中原/select的定义:
<requestHandler name="/select" class="solr.SearchHandler" inherits="/selectdistributed"> <!-- 这里可以保留/select特有的配置,比如额外的默认参数 --> </requestHandler>
这样/select会复用/selectdistributed中配置的默认shards参数,同时保留自身原有配置。
注意:修改配置后必须重启对应的Solr节点才能生效,另外要确保两个分片的Core配置(如schema、字段定义)完全一致,避免查询时出现字段不匹配的异常。
内容的提问来源于stack exchange,提问作者Emanuel
相关产品推荐
相关产品推荐

