Solr配置UUIDUpdateProcessorFactory自动生成uniqueKey时id字段缺失报错
解决Solr自动生成UUID作为uniqueKey仍提示缺少id字段的问题
针对你在Solr 9.1.1中配置UUIDUpdateProcessorFactory后仍出现missing required field: id错误的情况,以下是几个需要排查的修复点:
1. 设置更新处理器链为全局默认
当前你仅在/update请求处理器中指定了更新链,但Solr的其他更新入口(如/update/json、/update/csv或数据导入处理器)可能未触发该链。将处理器链设为全局默认,确保所有更新请求都经过UUID生成步骤:
修改solrconfig.xml中的更新处理器链配置:
<updateRequestProcessorChain name="uuid" default="true"> <processor class="solr.UUIDUpdateProcessorFactory"> <str name="fieldName">id</str> </processor> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>
2. 确保所有更新请求处理器都关联UUID链
如果不想设置全局默认,需为所有你用到的更新请求处理器都配置update.chain参数。例如:
<requestHandler name="/update/json" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="update.chain">uuid</str> </lst> </requestHandler> <requestHandler name="/update/csv" class="solr.UpdateRequestHandler"> <lst name="defaults"> <str name="update.chain">uuid</str> </lst> </requestHandler>
3. 确认配置修改后重启Solr
Solr不会自动加载配置文件的修改,修改managed-schema.xml和solrconfig.xml后,必须重启Solr服务才能让新配置生效。
4. 排查提交的请求内容
错误信息中的doc=null提示提交的请求可能未包含有效文档,或是请求格式有误。确保提交的请求是合法的Solr更新格式,例如:
[{"title": "测试文档"}]
5. 检查是否有其他处理器干扰
如果你的solrconfig.xml中存在其他更新处理器链,需确认它们没有覆盖或优先于UUID链执行。可以暂时禁用其他非必要的更新链,测试UUID生成是否正常。
内容的提问来源于stack exchange,提问作者MyO
相关产品推荐
相关产品推荐

