向Solr核心添加文档后全量查询无结果,求排查方案
我之前也碰到过Solr添加文档后搜不到的情况,给你几个实用的排查方向,一步步来:
排查思路
先手动提交索引变更
Solr默认不会在添加文档后立即刷新索引,需要显式执行commit操作才会让新文档可搜索。试试执行这个命令:curl http://192.168.121.49:8983/solr/arxius/update -H "Content-Type: text/xml" --data-binary '<commit/>'完成后再重新运行你的全量搜索命令,看是否能找到文档。
检查添加请求的响应状态
你当初执行添加文档的命令时,有没有留意返回的响应?正常应该是类似{"responseHeader":{"status":0,"QTime":XX}}的结果,如果status不为0,说明添加过程出错了。可以重新执行一次添加命令,仔细看返回内容;或者去Solr的日志文件(通常在server/logs/solr.log)里查找相关错误,比如字段不存在、XML格式错误等。确认字段的schema定义
检查authors_ca字段在你的核心schema(managed-schema或schema.xml)中的配置:- 字段是否存在?如果是动态字段,确认
*_ca的规则是否映射到了支持索引的字段类型 - 字段是否设置了
indexed="true"?如果只有stored="true"而没有索引,虽然文档会被存储,但无法被搜索到(不过全量*:*理论上应该返回所有文档,但字段未定义的话Solr可能会拒绝该文档)
你可以用这个命令查看字段详情:
curl http://192.168.121.49:8983/solr/arxius/schema/fields/authors_ca- 字段是否存在?如果是动态字段,确认
验证核心的正确性
确认你操作的核心和搜索的核心是同一个,有没有拼写错误?可以用以下命令查看所有核心的状态:curl http://192.168.121.49:8983/solr/admin/cores?action=STATUS检查
arxius核心是否存在且状态正常。检查自动提交配置
如果你依赖Solr的自动提交,去核心的solrconfig.xml里查看autoCommit配置。比如:<autoCommit> <maxDocs>10000</maxDocs> <maxTime>30000</maxTime> <!-- 30秒自动提交 --> <openSearcher>true</openSearcher> </autoCommit>如果
maxTime设置得太大,添加文档后需要等很久才会自动提交,这期间就搜不到新文档。用Solr Admin UI辅助排查
直接访问Solr管理界面http://192.168.121.49:8983/solr/,进入arxius核心的:- Query页面:执行
*:*搜索,直观查看结果 - Documents页面:尝试重新添加文档,看是否有报错提示
- Schema页面:检查
authors_ca字段的配置细节
- Query页面:执行
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

