1. 程式人生 > >solr6.6教程-從mysql數據庫中導入數據(三)

solr6.6教程-從mysql數據庫中導入數據(三)

實驗 jdb 什麽是 錯誤 default 查詢 handle times ins

建一個例子,給core導入索引數據,用於後面的實驗。

1.創建一個數據庫

創建一個數據庫,並創建幾條數據,表結構:
id自增
S_user用戶信息
S_text隨便填一些內容

註意:字符集UTF8

技術分享

添加幾條數據

技術分享

2. 配置solrconfig.xml

sorlconfig.xml文件與managed-shema文件是經常要修改的文件。位於創建的core目錄裏面的config文件夾裏。例如:
D:\solrhome\core_demo

在solrconfig.xml文件的後面添加如下信息:

<!--引入DataImportHandler類的jar-->
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

  

技術分享

其中data-config.xml 需要在solrconfig.xml同級目錄下自己手動創建

3.在目錄D:\solrhome\core_demo\conf 創建data-config.xml 暫時不填寫內容,後面再寫.

技術分享

4.編寫managed_schema

目錄D:\solrhome\core_demo\conf

managed_schema裏面定義了很多域,其實是使用了lucene中的域。
什麽是域?域的作用是定義一個solr索引裏面的字段是什麽類型,能做什麽,怎麽做。有點類似數據庫中字段的類型。但表示的含義更加的豐富。

域的定義

Name:這個域的名稱,在整個managed_schema文件裏面需要唯一,不能重復,這裏定義成跟數據庫表字段的名稱,方便使用。當然,也可以定義成其他名字

Type:表示這個字段的類型是什麽,string是字符串類型,int是整形數據類型,date是時間類型,相當於數據庫裏面的timestamp

Indexed:是否索引

Stored:是否存儲

multiValued:是否多值。在一個域下存儲多個值。一個域下存儲一個數組。

在managed_schema後面添加如下代碼

<!--這裏無需定義id,因為managed_schema文件已經在前面開頭位置定義了,id是必須,並且唯一的-->
<field name="S_user" type="string" indexed="true"  stored="true" />
<field name="S_text" type="string" indexed="true" stored="true"/>

技術分享

5.編寫之前創建的data-config.xml

<dataConfig>
     <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test" user="root" password="123456" batchSize="-1" />
 <document>
           <entity name="mycore_test" query="select id,S_user,S_text from test">
              <!--column的id是數據庫的id,name的id是managed_schema裏面的id,id是必須,並且唯一的-->
             <field column="id" name="id" />
             <field column="S_user" nam="S_user" />
            <field column="S_text" name="S_text" />
       </entity>
   </document>
 </dataConfig>

  

技術分享

dataSource配置數據庫信息

document配置數據庫查詢語句與managed_schema域的對應關系。目的是,在core導入數據的時候,會先通過該配置信息鏈接到數據庫通過查詢語句把數據查詢出來,通過數據庫字段與managed_schema域關聯關系創建索引

開始導入數據

配置好了前面的信息,就可以在後臺導入數據,配置信息需要reload一下core才能生效。如果配置文件出現錯誤,reload的時候也會有錯誤信息提示。

技術分享

reload完之後,開始導入

技術分享

點擊Execute開始導入

技術分享

如果數據量大可以勾選,自動刷新

技術分享

如下圖建立索引成功。

技術分享

這裏有幾個需要註意的地方,是我遇到的問題

1.JAVA和MYSQL連接jar包是否匹配,如果不匹配會出現如下的錯誤,導入失敗,即使提示提取成功,也是無法建立索引,因為jar版本不對。

技術分享

同時Tomcat也會有報錯信息如下:

技術分享

最終的解決辦法就是更換jar 包,我本機的MYSQL版本是

mysql jar包地址

D:\tomcat\webapps\solr\WEB-INF\lib

技術分享

JAVA版本是

技術分享

現在我們查詢下,看是否建立索引成功。

技術分享

solr6.6教程-從mysql數據庫中導入數據(三)