问题溯源(导致solr数据覆盖可能原因):
因为是多表的原因,可能在将mysql数据库导入到solr索引库中会出现不同数据相同id,而在solr实例schema配置会将id作为solr索引库的主键id,这样因为id的相同会导致不同的数据覆盖,丢失数据
解决方法(不是唯一):
1.在solrhome实例schema配置中添加
<fieldType name="uuid" class="solr.UUIDField" indexed="true"/> <field name="uuid" type="uuid" indexed="true" stored="true" required="true"/>
2.在solrhome实例schema配置中修改
<uniqueKey>uuid</uniqueKey>(uuid原本为id) <field name="_root_" type="uuid" docValues="false" indexed="true" stored="false"/>(type属性默认为string,要与主键id属性保持一致)
3.在solrconfig.xml文件中添加
<requestHandler name="/dataimport" class="solr.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> <str name="update.chain">uuid</str>(新添加的) </lst> </requestHandler>
再添加
<updateRequestProcessorChain name="uuid"> <processor class="solr.UUIDUpdateProcessorFactory"> <str name="fieldName">uuid</str> </processor> <processor class="solr.RunUpdateProcessorFactory" /> </updateRequestProcessorChain>
最后重启solr服务器,数据重新导入
需要了解更多数据库技术:linux环境下解决solr7.4服务器多表导入数据覆盖的问题,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/814281.html