solr5.0定时增量更新,实现数据同步

在项目开发过程中为了提高查询效率和降低数据库的压力,因此此时就将查询量大的数据放到solr中,查询从solr中执行,不走数据库,但是数据库数据修改后怎么办呢。除了在程序中根据业务需求去操作solrJ实现索引同步外,也可以通过solr连接数据库,实现数据的定时同步,保证数据的一致性,具体使用方法根据业务需求选择。

项目中使用solrJ根据业务需求操作solr APl可以参考下另一篇博客:https://blog.csdn.net/qq_37138756/article/details/80828950


第一步:在solrHome\core\conf(core为我创建的solr库)目录下添加data-config.xml配置文件并编辑内容,这个文件和schema.xml在同一级目录:

solr5.0定时增量更新,实现数据同步_第1张图片


data-config.xml配置文件并编辑内容:




  
						  
	 
  
        
			
			
		
		
		
		  
		  
		  
		  
		
		
  

solr5.0定时增量更新,实现数据同步_第2张图片


需要注意的是:

solr5.0定时增量更新,实现数据同步_第3张图片

 因为我简单搭建了一个实例,所以没有逻辑删除键,如果需要逻辑删除的话,可以通过deletedPkQuery来进行查询 例:




第二步:在solrHome\core\conf目录下的solrconfig.xml配置文件中引入data-config.xml文件。将下面的内容放到solrconfig.xml即可:

 
    
      data-config.xml
    
  

solr5.0定时增量更新,实现数据同步_第4张图片

solr5.0定时增量更新,实现数据同步_第5张图片


第三步:在solrHome下新建一个conf文件夹,创建一个dataimport.properties文件,将一下内容添加到文件中:

#  to sync or not to sync    
#  1 - active; anything else - inactive    
# 这里的配置不用修改      
syncEnabled=1
#  which cores to schedule    
#  in a multi-core environment you can decide which cores you want syncronized    
#  leave empty or comment it out if using single-core deployment    
#  修改成你所使用的core,我这里是我自定义的core    
syncCores=core
#  solr server name or IP address    
#  [defaults to localhost if empty]    
#  这个一般都是localhost不会变      
server=localhost
#  solr server port    
#  [defaults to 80 if empty]    
#  安装solr的tomcat端口,如果你使用的是默认的端口,就不用改了,否则你懂的      
port=8085
#  application name/context    
#  [defaults to current ServletContextListener's context (app) name]    
#  这里默认不改      
webapp=solr
#  URL params [mandatory]    
#  remainder of URL    
#  这里要改成下面的形式      
params=/dataimport?command=delta-import&clean=false&commit=true
#  schedule interval     
#  [defaults to 30 if empty]    
#  这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,根据项目需求修改      
#  开始测试的时候为了方便看到效果,时间可以设置短一点,我这是60秒  
interval=1
#  重做索引的时间间隔,单位分钟,默认7200,即5天;     
#  为空,为0,或者注释掉:表示永不重做索引    
reBuildIndexInterval=7200
#  重做索引的参数    
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;    
#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期    
reBuildIndexBeginTime=03:10:00

solr5.0定时增量更新,实现数据同步_第6张图片


solr5.0定时增量更新,实现数据同步_第7张图片

第四步:需要引入jar包solr-dataimportscheduler-1.0.jar , solr-dataimporthandler-5.0.0-.jar, solr-dataimporthandler-extras-5.0.0-.jar 

放到Tomcat目录下webapps\solr\WEB-INF\lib的目录下面

百度网盘:链接:https://pan.baidu.com/s/1G_fsGlK8ut8ihF1vpek1rQ 密码:zko6


(刚开始使用apache-solr-dataimportscheduler用到的版本是1.1.1,因为版本不支持,不能使用,在启动tomcat的时候会报错,后来替换为1.0版本的jar以后可以使用。solr-dataimporthandler-5.0.0-.jar,solr-dataimporthandler-extras-5.0.0-.jar 包,需要和版本对应)

solr5.0定时增量更新,实现数据同步_第8张图片


 引入jar后,在Tomcat目录下webapps\solr\WEB-INF目录下的web.xml文件的servlet标签上添加下面的子标签。:


		org.apache.solr.handler.dataimport.scheduler.ApplicationListener
	

注意:org.apache.solr.handler.dataimport.scheduler.ApplicationListener后千万不要有空格


solr5.0定时增量更新,实现数据同步_第9张图片


配置完成以后,重启solr,在数据库中对数据进行操作的时候,如果索引库中发生了变化,说明配置完成






你可能感兴趣的:(solr)