我在使用solrcloud模式时遇到了问题。当solr实例运行delta-import时,可能需要 一段时间要完成(我的数据源是mysql数据库)。所以在这段时间内,新添加的文件 将丢失,deltaQuery,我使用SUBDATE($ {dih.last_index_time},INTERVAL 2 MINUTE), 让它比last_index_time早2分钟运行delta-import,如果delta-import的持续时间是5分钟,它将在前3分钟丢失记录。
我们的服务器之前没有使用solr云模式,我们处理这个问题是要重写dataimport.properties文件, 查询max(sys_time_stamp),这将有助于记录最大时间戳,并让solr可以运行delta导入站 当然,在文件中找到的时间,它永远不会错过文档。
但是现在,我们使用solrcloud,dataimport.properties在zookeeper上,我们可能有多个集合用于 同样的核心。我现在可以在colleciton中更新dataimport.properties文件吗?你有任何帮助记录的解决方案吗? dataimport.properties中的max(sys_time_stamp),而不是使用delta-import start的运行时间?
干杯
答案 0 :(得分:0)
我的解决方案是,我测试了最近几天新添加的文档,并得到了 最大delta-import持续时间,并设置大于此时间的间隔。 因此,下次运行delta-import的solr实例也可以包含新的 在前3分钟添加文件。我添加了一个新的cronjob来运行delta-import每天,开始时间为last_index_time - 24小时,以防万一 将在一天内丢失一些文件,因此风险将非常低。
我发现有"自定义参数",键值对可以在运行delta-import时设置,并且可以在dataConfig文件中用作$ {dih.request.XXXX},将有助于设置delta-import开始时间。
不是完美的解决方案,但适用于我的系统。