在项目开发过程中为了提高查询效率和降低数据库的压力,因此此时就将查询量大的数据放到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在同一级目录:
data-config.xml配置文件并编辑内容:
需要注意的是:
因为我简单搭建了一个实例,所以没有逻辑删除键,如果需要逻辑删除的话,可以通过deletedPkQuery来进行查询 例:
第二步:在solrHome\core\conf目录下的solrconfig.xml配置文件中引入data-config.xml文件。将下面的内容放到solrconfig.xml即可:
data-config.xml
第三步:在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
第四步:需要引入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的目录下面
(刚开始使用apache-solr-dataimportscheduler用到的版本是1.1.1,因为版本不支持,不能使用,在启动tomcat的时候会报错,后来替换为1.0版本的jar以后可以使用。solr-dataimporthandler-5.0.0-.jar,solr-dataimporthandler-extras-5.0.0-.jar 包,需要和版本对应)
引入jar后,在Tomcat目录下webapps\solr\WEB-INF目录下的web.xml文件的servlet标签上添加下面的子标签。:
org.apache.solr.handler.dataimport.scheduler.ApplicationListener
注意:org.apache.solr.handler.dataimport.scheduler.ApplicationListener后千万不要有空格
配置完成以后,重启solr,在数据库中对数据进行操作的时候,如果索引库中发生了变化,说明配置完成