您的位置:首页 > 数据库 > MySQL

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

2017-07-21 17:33 477 查看
第一步:修改solrconfig.xml



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,测试



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  slor6 mysql增量更新