首页

通过配置apache solr的last_index_time实现dataimport导入功能支持增量更新delta-import索引功能

标签:solr,增量索引,性能优化,mysql-dsmconfig.xml,大数据量,apache,deltaQuery,deletedPkQuery,deltaImportQuery,dataimporter.properties,last_index_time     发布时间:2017-09-05   

一、前言

原来基于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

通过配置apache  solr的last_index_time实现dataimport导入功能支持增量更新delta-import索引功能

三、增量导入(新)

1.在原来content表中增加“LAST_INDEX_TIME”、“IS_DELETE”字段,如下图所示

通过配置apache  solr的last_index_time实现dataimport导入功能支持增量更新delta-import索引功能

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 

通过配置apache  solr的last_index_time实现dataimport导入功能支持增量更新delta-import索引功能