第一步:修改solrconfig.xml

Solr-6.5.1从mysql数据库增量导入数据_mysql

720行左右

<!-- 配置全量导入 -->
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>

<!-- 配置增量导入 -->
<requestHandler name="/deltaimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">delta-data-config.xml</str>
</lst>
</requestHandler>

第二步:创建delta-data-config.xml文件 (和solrconfig.xml同目录)

<dataConfig>  
<dataSource name="source2" type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/ahutshop"
user="root"
password="root"/>

<!--
name:数据库中表的名称
dataSource:数据源
pk:唯一标识(不是表的主键)
query:查询语句
deltaQuery:查询出有更改过的id
deltaImportQuery:根据id查询
column:表的字段名称
name:属性名称
-->
<document>
<entity name="goods_type" dataSource="source2" pk="typeId"
query="SELECT type_id,type_name,create_time,update_time FROM goods_type g"
deltaImportQuery="SELECT type_id as typeId,type_name,create_time,update_time FROM goods_type where type_id='${dih.delta.typeId}'"
deltaQuery="select type_id as typeId from goods_type where create_time > '${dih.last_index_time}'">
<field column='type_id' name='typeId'
<field column='type_name' name='typeName'
<field column='create_time' name='createTime' dateTimeFormat='yyyy-MM-dd HH:mm:ss'
<field column='update_time' name='updateTime' dateTimeFormat='yyyy-MM-dd HH:mm:ss'
</entity>
</document>
</dataConfig>

${dih.delta.id}和${dih.last_index_time}是内置函数。
其中${dih.delta.id}中的id要替换成pk的值,如${dih.delta.typeId}

在 dataimport.properties(同级目录下)中会记录id和最后添加索引的时间

#Fri Jul 21 17:16:27 CST 2017
goods_type.last_index_time=2017-07-21 17\:16\:26
last_index_time=2017-07-21 17\:16\:26

第三步:重启tomcat,测试

Solr-6.5.1从mysql数据库增量导入数据_slor6_02

一定不要勾选Clean!!!否则所有没有更新的数据全没了