公告:欢迎访问,查看更多资源请点我^.^!            点我关闭广告
配置solr自动同步数据库
2018-07-27 17:04:03
1652人阅读
评论(1)
分类:Java

1.在solr根目录下新建 conf文件夹  D:\solr\conf, 新建 dataimport.properties文件

dataimport 文件 内容

#  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:simple
syncCores=collection1

# 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=8090

# application name/context
# [defaults to current ServletContextListener's context (app) name]
# 这里默认不改
webapp=solr

# URL params [mandatory]
# remainder of URL
# 这里改成下面的形式,solr同步数据时请求的链接
params=/dataimport?command\=full-import&clean\=true&commit\=true

# schedule interval
# number of minutes between two runs
# [defaults to 30 if empty]
#这里是设置定时任务的,单位是分钟,也就是多长时间你检测一次数据同步,根据项目需求修改
# 开始测试的时候为了方便看到效果,时间可以设置短一点
interval=1

# 重做索引的时间间隔,单位分钟,默认7200,即5天;
# 为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=7200

# 重做索引的参数
reBuildIndexParams=/select?qt\=/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



2: solr-dataimportscheduler-1.1.jar 导入 tomcat中的 solr 项目中的 lib中

3 在solr的web.xml中添加 

<listener>

<listener-class>

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

</listener-class>

</listener>

4.配置 D:\solr\collection1\conf\data-config.xml 

<dataConfig>   

//数据库驱动及账户密码配置

<dataSource type="JdbcDataSource"

driver="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@//10.20.3.150/orcl"

user="EMIANCANGTEST"

password="EMIANCANGTEST" />



<document>



<entity name="E_JKMBJD_FILE" pk="id"



# 同步数据语句

query="select t.e_jkmbjd_id id, t.e_jkmbjd_content,t.e_jkmbjd_filename,t.e_jkmbjd_fileurl ,

    t.e_jkmbjd_upload_date , t.e_jkmbjd_update_date from E_JKMBJD_FILE t where t.e_jkmbjd_state = '2' "



# 增量同步语句

deltaQuery="select t.e_jkmbjd_id id from E_JKMBJD_FILE t where t.e_jkmbjd_state = '2' and e_jkmbjd_upload_date >

'${dataimporter.last_index_time}'"



# 增量同步需要修改的数据

deltaImportQuery="select t.e_jkmbjd_id id, t.e_jkmbjd_content,t.e_jkmbjd_filename,t.e_jkmbjd_fileurl , t.e_jkmbjd_upload_date , t.e_jkmbjd_update_date from E_JKMBJD_FILE t where t.e_jkmbjd_state = '2' and e_jkmbjd_id ='${dataimporter.delta.id}'"
# 同步需要删除的数据

    deletedPkQuery="select t.e_jkmbjd_idfrom id E_JKMBJD_FILE t where t.e_jkmbjd_state = '1'" >



<field column="id" name="id"/>

<field column="e_jkmbjd_content" name="e_jkmbjd_content"/>

<field column="e_jkmbjd_filename" name="e_jkmbjd_filename"/>

<field column="e_jkmbjd_fileurl" name="e_jkmbjd_fileurl"/>

<field column="e_jkmbjd_upload_date" name="e_jkmbjd_upload_date"/>

<field column="e_jkmbjd_update_date" name="e_jkmbjd_update_date"/>



</entity>



</document>



</dataConfig>


这里有个坑 必须 为id


可能出现数据导入不进去的bug

问题:Can't find (or read) directory to add to classloader: ../../../contrib/extraction/lib (resolved as: /home/solr_home/collection1/../../../contrib/extraction/lib


解决: 进入 solrconfig.xml



分享一下:
赞一下(1)
博主资料
博主头像
zc521106
文章:34
浏览:19899
文章分类
Java(12)
NoSql(112)
数据库(12)
前端(12)
阅读排行
Java基础知识
(12)
NoSql应用
(112)
数据库Oracle语法
(12)
前端常用工具类
(12)
java web项目
(12)
linux安装mysql
(12)
评论区
这篇文章怎么样?写点评论吧!
姓名:
邮箱:
有回复时通知我:
发表
回复【10.20.30.32】:
solr复杂吗
2018-08-10 18:16:00
* 以上用户言论只代表其个人观点,不代表iBlog网站的观点或立场,如有任何疑问请随时联系管理员...