亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql導入數據到solr的方法

發布時間:2020-04-22 14:36:32 來源:億速云 閱讀:499 作者:三月 欄目:MySQL數據庫

本文主要給大家介紹mysql導入數據到solr的方法,其所涉及的東西,從理論知識來獲悉,有很多書籍、文獻可供大家參考,從現實意義來講,億速云累計多年的實踐經驗可分享給大家。

1      mysql導入數據到solr

方式一:創建項目,查詢出數據,一條一條addsolr中;(不推薦)

方式二:通過配置復制數據到solr

以上已完成了在本地window8中對solr的部署,為solr添加了一個自定義的coredemo,并且引入了ik分詞器。

那么該如何將本地的mysql的數據導入到solr中呢?

1.1    準備工作

1.1.1     準備數據源

mysql數據源:test庫中的user表(7條數據),其中這個update_time字段是用于solr更新數據庫數據的依據,表中必須得有這個字段。

 mysql導入數據到solr的方法

SETFOREIGN_KEY_CHECKS=0;

 

------------------------------

-- Table structurefor user

------------------------------

DROP TABLE IFEXISTS `user`;

CREATE TABLE`user` (

  `id` int(10) NOT NULL AUTO_INCREMENT,

  `name` varchar(30) DEFAULT NULL,

  `sex` int(1) DEFAULT NULL,

  `title` varchar(200) DEFAULT NULL,

  `insert_time` datetime DEFAULT NULL,

  `update_time` datetime DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDBAUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

 

------------------------------

-- Records of user

------------------------------

INSERT INTO `user`VALUES ('1', '航三', '1', '有電腦','2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('2', '理三', '1', '有電腦,生活就是游戲么。要努力啊', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('3', '李四', '0', '準備工作完成之后就可以進行配置和操作了。', '2017-05-02 15:40:19', '2017-05-03 15:40:22');

INSERT INTO `user`VALUES ('4', '王五', '0', '這個demo主要是針對多圖片上傳時使用的,可以攜帶動態加載的參數。', '2017-05-02 15:40:19', '2017-05-0315:40:22');

INSERT INTO `user`VALUES ('5', '趙六', '1', 'demo里也有,多文件上傳+預覽功能。也可以自己去調U', '2017-05-25 15:43:03', '2017-05-25 15:43:07');

INSERT INTO `user`VALUES ('6', '周七', '0', '這個demo主要是針對多圖片上傳時使用的', '2017-05-02 15:43:23', '2017-05-11 15:43:26');

INSERT INTO `user`VALUES ('7', '李白', '1', '詩人','2017-05-02 15:43:23', '2017-05-02 15:43:25');

 

1.1.2     準備需要的jar

鏈接mysql驅動jarmysql-connector-java-5.1.14.jar(這個基本都有)

D:\solr-4.10.2\dist\solr-dataimporthandler-4.10.2.jar

mysql導入數據到solr的方法

1.1.3     準備配置

solr的解壓文件目錄中找到“D:\solr-4.10.2\example\example-DIH\solr\db\conf”下的db-data-config.xml文件到你的core(比如:

D:\solr-4.10.2\example\demo-solr\demo\confconf目錄下,并更名為data-config.xml

詳細配置如下:

<dataConfig>

    <dataSourcetype="JdbcDataSource" driver="com.mysql.jdbc.Driver"

       url="jdbc:mysql://localhost:3306/test" user="root"password="123456"

        batchSize="100" />

    <document>

        <entity name="user"pk="id"

            query="SELECTid,name,sex,title,insert_time,update_time FROM user"

            deltaImportQuery="SELECTid,name,sex,title,insert_time,update_time FROM user whereid='${dataimporter.delta.id}'"

            deltaQuery="SELECT id FROMuser where update_time > '${dataimporter.last_index_time}'">

            <field column="id"name="id" />

            <field column="name"name="name" />

            <field column="sex"name="sex" />

                     <fieldcolumn="title" name="title" />

            <fieldcolumn="insert_time" name="insertTime" />

            <fieldcolumn="update_time" name="updateTime" />

        </entity>

    </document>

</dataConfig>

deltaImportQuery:獲取增量數據時使用的SQL增量導入時使用

deltaQuery:獲取pkSQL增量導入時使用

注意查詢條件的寫法:${..},如在本例中:

${dataimporter.last_index_time}索引上次導入時間

${ dataimporter.delta.id}實體user查詢結果中的id,也可以用${user.id}表示

關于data-config.xml詳解,參考博文:

http://www.jianshu.com/p/91a5a0c35475

http://blog.csdn.net/boolbo/article/details/50352331

1.2    配置實現

注意:如果是solr是使用tomcat進行啟動,只是相關的jar和配置文件放的位置不一樣。配置是一致的。

1、  拷貝mysql-connector-java-5.1.14.jarsolr-dataimporthandler-4.10.2.jarsolrD:\solr-4.10.2\example\solr-webapp\webapp\WEB-INF\lib目錄中;

 

mysql導入數據到solr的方法

2,在D:\solr-4.10.2\example\demo-solr\demo\conf目錄下,更改solrconfig.xml配置文件。添加如下內容:

<requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">

    <lst name="defaults">

         <strname="config">data-config.xml</str>

    </lst>

  </requestHandler>

3,在D:\solr-4.10.2\example\demo-solr\demo\conf目錄下,更改schema.xml配置,配置相關字段:

<?xmlversion="1.0" encoding="UTF-8" ?>

<schemaname="example" version="1.5">

 

   <field name="_version_"type="long" indexed="true" stored="true"/>

   <field name="_root_"type="string" indexed="true" stored="false"/>

   <field name="id"type="string" indexed="true" stored="true"required="true" multiValued="false" />

   <!-- 指定分詞類型-->

   <field name="name"type="text_ik" indexed="true" stored="true" />

   <field name="title"type="text_ik" indexed="true" stored="true"/>

   <field name="sex"type="int" indexed="false" stored="true" />

   <!-- field標簽中的name值必須和data-config.xml中的fileld標簽name值保持一致 -->

   <field name="insertTime"type="date" indexed="true" stored="true" />

   <field name="updateTime"type="date" indexed="true" stored="true"/>

 

       <uniqueKey>id</uniqueKey>

       <fieldType name="int"class="solr.TrieIntField" precisionStep="0"positionIncrementGap="0"/>

    <fieldType name="string"class="solr.StrField" sortMissingLast="true" />

    <fieldType name="long"class="solr.TrieLongField" precisionStep="0"positionIncrementGap="0"/>

       <fieldType name="date"class="solr.TrieDateField" precisionStep="0"positionIncrementGap="0"/>

       <!-- 添加IKAnalyzer中文分詞器 -->

       <fieldType name="text_ik"class="solr.TextField">  

     <analyzerclass="org.wltea.analyzer.lucene.IKAnalyzer"/>  

       </fieldType>

 

</schema>

 

4,重啟solr應用,查看原有的數據:

mysql導入數據到solr的方法

還是原來的那些數據。

5,導入mysql數據到solr中:

選擇Dataimport進行導入操作。

mysql導入數據到solr的方法

查詢:

mysql導入數據到solr的方法

證明數據已經導入,并刪除了原來的數據!

 

2      刪除所有數據

mysql導入數據到solr的方法

Documents運行/update,指定typexml。先查詢后刪除:

語句為:

<delete><query>*:*</query></delete>

<commit/>

Submit,執行刪除!

mysql導入數據到solr的方法

當然,上面說的是手動刪除,如果要刪除的數據很多,想在下一次自動同步數據的時候自動刪除指定的數據該如何做呢?

2.1    條件刪除solr數據(在增量導入數據的過程中刪除)

場景:有一批要拍賣的店鋪數據存儲在solr中,拍賣的店鋪數據有一個拍賣結束時間(endTime),當拍賣結束時間一到,這條存儲在solr中的拍賣數據就沒有意義了,想要刪除這條存儲在solr中的數據。

按照上面的手動刪除也不是不可以,但這人工操作未免太扯了,到時間人工去solr中刪除這條數據耗時又耗力,也不太現實。

解決辦法就是:

data-config.xmlentity中添加:

deletedPkQuery="select id from shops where endTime &lt; NOW()"

 

這一句,這句和entiyquery同級,目的是查詢出所有店鋪數據中結束時間小于當前時間的店鋪id,

這個店鋪id會和deltaQuery中收集到的id一并執行deltaImportQuery操作,只不過一個是添加數據,一個是刪除數據。

 

注意:這個配置在導入數據成功后,無效果。只在導入過程中有效果!

 

3      性能優化

1、  將所有只用于搜索的,而不需要作為結果的field(特別是一些比較大的field)的stored設置為false

2、  將不需要被用于搜索的,而只是作為結果返回的fieldindexed設置為false

3、  刪除所有不必要的copyField聲明為了索引字段的最小化和搜索的效率;

4、  將所有的 text fieldsindex都設置成false,然后使用copyField將他們都復制到一個總的 text field上,然后進行搜索。

看了以上介紹mysql導入數據到solr的方法,希望能給大家在實際運用中帶來一定的幫助。本文由于篇幅有限,難免會有不足和需要補充的地方,大家可以繼續關注億速云行業資訊板塊,會定期給大家更新行業新聞和知識,如有需要更加專業的解答,可在官網聯系我們的24小時售前售后,隨時幫您解答問題的。

 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天祝| 长白| 宕昌县| 遂溪县| 息烽县| 礼泉县| 尖扎县| 和平县| 郸城县| 安新县| 江安县| 永清县| 资源县| 平定县| 确山县| 湟中县| 南川市| 香河县| 岳普湖县| 德江县| 汽车| 固阳县| 建瓯市| 遵义市| 丹阳市| 麻江县| 潢川县| 安平县| 清新县| 汤阴县| 和田县| 揭西县| 西青区| 若羌县| 汝城县| 诏安县| 天祝| 长治县| 库车县| 砚山县| 大田县|