這裏建立了一個表,加上了測試數據,注意這裏有一個字段來記錄更新時間 update_datemysql
咱們首先介紹全量同步,再介紹增量同步sql
個人 solr 版本是 7.5 的,new_core是我建立的 core,打開 solrconfig.xml,增長以下配置數據庫
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
而後在當前 conf 目錄下建立 data-config.xmlapache
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.0.131:3306/hongone" user="root" password="***"/> <document> <entity name="ho_front_message" pk="id" transformer="DateFormatTransformer" query="SELECT id, content,object_id,type,update_date,create_date FROM ho_front_message" > <field column="id" name="id"/> <field column="object_id" name="objectId"/> <field column="content" name="content"/> <field column="type" name="type"/> <field column="enable_flag" name="enableFlag"/> <field column="update_date" name="updateDate" dateTimeFormat="yyyy-MM-dd HH:mm:ss" /> <field column="create_date" name="createDate" dateTimeFormat="yyyy-MM-dd HH:mm:ss" /> </entity> </document> </dataConfig
注意:修改 mysql 鏈接地址和數據庫名和用戶名和密碼測試
entity 標籤下 url
-name:表名spa
-pk:主鍵名code
-query:查詢語句,全量同步下會同步當前表中哪些數據orm
-field:表子段映射,注意時間格式xml
以上須要同步的表子段,須要配置到 managed-schema.xml ,對於已有的字段,不須要添加,例如 id 字段
<!--ho_front_message--> <field name="type" type="string" indexed="true" stored="true"/> <field name="objectId" type="string" indexed="true" stored="true"/> <field name="enableFlag" type="string" indexed="true" stored="true"/> <field name="createDate" type="pdate" indexed="true" stored="true"/> <field name="updateDate" type="pdate" indexed="true" stored="true"/> <!--ho_front_message-->
注意 type="pdate" 由於個人 solr 是7.5 版本的
選擇 full-import 全量導入
勾選 clean 表示導入以前會清空數據
entity 選擇咱們在data-config.xml建立的
能夠看到數據已經查詢出來了
修改 data-config.xml
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.0.131:3306/hongone" user="root" password="***"/> <document> <entity name="ho_front_message" pk="id" transformer="DateFormatTransformer" query="SELECT id, content,object_id,type,update_date,create_date FROM ho_front_message" deltaQuery="select id from ho_front_message where update_date > '${dih.last_index_time}'" deltaImportQuery="select * from ho_front_message where id='${dih.delta.id}'" deletedPkQuery="select id from ho_front_message where enable_flag='0'" > <field column="id" name="id"/> <field column="object_id" name="objectId"/> <field column="content" name="content"/> <field column="type" name="type"/> <field column="enable_flag" name="enableFlag"/> <field column="update_date" name="updateDate" dateTimeFormat="yyyy-MM-dd HH:mm:ss" /> <field column="create_date" name="createDate" dateTimeFormat="yyyy-MM-dd HH:mm:ss" /> </entity> </document> </dataConfig>
deltaQuery:增量索引查詢主鍵ID
deltaImportQuery:增量索引查詢導入的數據
deletedPkQuery:此操做值查詢那些數據庫裏僞刪除的數據的ID(enable_flag=0的數據)
配置完後後,打開數據庫修改其中一條記錄的值和update_date
update ho_front_message set content='xxxx' ,update_date=now() where id='xxx'
導入增量數據,勾選 delta-import
再次查詢看看增量數據是否正確
刪除數據就是把某條數據的 enable_flag=0 ,再操做一下增量導入