一、前言
原来基于apache solr的dataimport功能的full-import实现全部数据重新索引化,每次数据更新之后必须都重新删除掉,再重新全量创建索引出来,这两天由于数据量突发猛涨,发现通过这种方式效率特别低效,不便于数据及时更新后同步增量更新索引,于是这两天考虑实现delta-import的增量更新索引功能。
二、全量导入(旧)
1. mysql-dsmconfig.xml配置如下
<?xml version="1.0" encoding="UTF-8" ?>@b@<dataConfig>@b@ @b@ <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/mysqldb" user="root" password="123456"/> @b@ <document>@b@ @b@ <entity name="subject" transformer="HTMLStripTransformer" query="select id,title,create_time,url,keywords,zhaiyao,folder_id,img_icon,ori_url,air_url,cdn_url from content">@b@ <field name="id" column="id" />@b@ <field name="title" column="title" stripHTML="true"/>@b@ </entity> @b@ @b@ </document>@b@</dataConfig>
2.全量提交命令地址:http://solr.xwood.com:8082/subject/dataimport?command=full-import&commit=true&clean=false&offset=0&length=100000
三、增量导入(新)
1.在原来content表中增加“LAST_INDEX_TIME”、“IS_DELETE”字段,如下图所示
2. mysql-dsmconfig.xml配置及说明
<?xml version="1.0" encoding="UTF-8" ?>@b@<dataConfig>@b@ @b@ <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/mysqldb" user="root" password="123456"/> @b@ <document>@b@ @b@ <!-- transformer 格式转化:HTMLStripTransformer 索引中忽略HTML标签 ---> @b@ <entity name="subject" transformer="HTMLStripTransformer" @b@ @b@ <!-- query:查询所有未删除记录数据,主要用在full-import全量导入时候 ---> @b@ query="select id,title,create_time,url,keywords,zhaiyao,folder_id,img_icon,ori_url,air_url,cdn_url from content where is_delete=0 "@b@ @b@ <!-- deltaQuery:根据dataimporter.properties每次刷新的last_index_time,实现刷新从上次last_index_time至今的数据,从而增量索引主键ID查询处理 ---> 注意这个只能返回ID字段@b@ deltaQuery="select id from content where is_delete=0 and last_index_time> '${dataimporter.last_index_time}'" @b@ @b@ <!-- deletedPkQuery:增量索引删除is_delete=1主键ID ---> @b@ deletedPkQuery="select id from content where is_delete=1 "@b@ @b@ <!-- deltaImportQuery:增量查询从上次刷新时间到现在数据且未删除的is_delete=0,进行增量更新发布索引文件 ---> @b@ deltaImportQuery="select id,title,create_time,url,keywords,zhaiyao,folder_id,img_icon,ori_url,air_url,cdn_url from content where is_delete=0 and last_index_time> '${dataimporter.last_index_time}' " @b@ @b@ ">@b@ <field name="id" column="id" />@b@ <field name="title" column="title" stripHTML="true"/>@b@ </entity> @b@ @b@ </document>@b@</dataConfig>
3. dataimport.properties内容如下
#Tue Sep 05 00:10:15 CST 2017@b@last_index_time=2017-09-05 00\:10\:14@b@subject.last_index_time=2017-09-05 00\:10\:14
4.增量完整提交地址:http://solr.xwood.com:8082/subject/dataimport?command=delta-import&entity=subject&commit=true