SOLR 5.2.1集群分面查询缺失指定值问题求助
针对Solr 5.2.1分面查询缺失特定值的排查方案
碰到过类似的分面丢值问题,结合Solr 5.2.1的特性,给你梳理几个能快速定位原因的方向:
先确认数据分布与查询范围
你当前查询的是单个分片副本shard3_replica1,首先要验证:缺失的cId:9...对应的文档是否真的存在于这个分片中?可以先换成集群入口的查询(去掉URL里的shard3_replica1路径),执行相同的参数看是否能拿到这个分面值。如果集群查询能返回,说明问题出在单个副本上——要么是文档未被路由到该分片,要么是副本同步滞后,没跟上主分片的最新数据。验证过滤条件的匹配性
单独查询缺失的cId对应的文档,执行:http://HOST/solr/shard3_replica1/select?q=cId:9...&fq=ctId:123456&rows=10如果没有返回任何结果,那分面里自然不会出现这个值。这时候要排查:这些文档的
ctId字段值是否确实是123456?有没有字段类型不匹配的情况(比如ctId定义为字符串,但过滤时用了数字,导致匹配失败)?排查分面缓存与统计逻辑
Solr的分面结果默认会被缓存,可能缓存的旧数据没有更新。你可以在查询里临时添加facet.cache=false参数,禁用分面缓存后再执行查询,看是否能返回缺失的分面值。另外,确认一下该cId对应的符合过滤条件的文档数是否≥1——虽然你设置了facet.mincount=1,但如果实际文档数为0,自然不会显示。检查字段的索引配置
登录Solr Admin查看cId字段的schema配置:- 是否开启了分面支持(
facet="true")?如果字段没开启分面,即使查询里指定facet.field=cId也可能出现异常。 - 如果
cId是多值字段,要确认是否有符合fq=ctId:123456的文档包含这个缺失的cId值。
- 是否开启了分面支持(
检查副本状态与同步情况
通过Solr Admin的Cloud页面查看shard3_replica1的状态:- 该副本是否处于
active状态? - 副本的文档数是否和同分片的主节点一致?如果存在同步滞后,会导致该副本的数据不完整,进而分面缺失值。
- 该副本是否处于
内容的提问来源于stack exchange,提问作者Himanshu
相关产品推荐
相关产品推荐

