二、同步mysql數據庫

原地址:http://www.cnblogs.com/zhuwenjoyce/p/6512378.html

尚未成功啓動solr的,請參考我的另一篇文章:http://www.cnblogs.com/zhuwenjoyce/p/6506359.html(solr6.4.1 搜索引擎啓動eclipse啓動)
本篇文章主要介紹如何同步mysql數據庫
 
添加core命名爲core3(之前試驗了好幾個都失敗了…)
注意,這裏的兩個輸入框*Dir如果不指定目錄,那麼默認這個core3目錄將應該在solrhome根目錄下,instanceDir和dataDir必須是兩個已存在的目錄
我這裏的core3目錄是D:\solr\solrhome\core3(這個core3目錄也要先建立出來)
 
先不要點擊按鈕Add Core,因爲會報錯:
Error CREATEing SolrCore 'core3': Unable to create core [core3] Caused by: Can't find resource 'solrconfig.xml' in classpath or 'D:\solr\core3'
爲了避免這個錯誤,我們首先需要爲這個core3做一些準備工作,包括要把Add Core中的solrconfig.xml和schema.xml文件都創建出來。主要分爲以下幾步:
第一步:創建solrconfig.xml
因爲是同步數據庫,所以找的是db目錄下的solrconfig.xml, D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml
(上圖工具使用的是一個windows搜索器:Everything.exe)
複製D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\solrconfig.xml黏貼到D:\solr\solrhome\core3目錄下。
修改D:\solr\solrhome\core3\solrconfig.xml,把<lib dir= 標籤這7個節點裏的${solr.install.dir:../../../..}替換爲本地solr根目錄D:/solr/solr-6.4.1
第二步:創建db-data-config.xml
因爲在D:\solr\solrhome\core3\solrconfig.xml中,提到使用db-data-config.xml來導入數據
所以同理,複製db目錄下的db-data-config.xml到D:\solr\solrhome\core3\目錄下
重點1:db-data-config.xml中,url地址中的&符號必須替換爲&amp;否則會報錯:
Data Config problem: 對實體 "useUnicode" 的引用必須以 ';' 分隔符結尾。
以下是我本地的db-data-config.xml文件
重點2:所有field標籤的name值都必須存在於schema.xml中!(參考第三步:創建schema.xml)
第三步:創建schema.xml
複製D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\managed-schema黏貼爲D:\solr\solrhome\core3\schema.xml,這個schema.xml就是Add Core界面的schema文件。
重點1:schema.xml文件定義了所有我們需要在數據庫中同步過來的字段,其中db-data-config.xml中導入的字段必須要存在於該schema.xml中所以schema.xml文件決定了在整個solr應用中,所有的字段必須不能重複!建議在solr中對字段命名時採用表名_字段名方式。
重點2:schema.xml文件中所有的<field標籤中required="true"屬性標誌着你所有在solr中的查詢都必須有一個字段是這些字段,而且必須有值,否則報錯:SolrException missing required field: id
重點3:當點擊Add Core按鈕之後,原先的D:\solr\solrhome\core3\schema.xml文件將被刪除,隨之增加D:\solr\solrhome\core3\conf\managed-schema(注意,沒有後綴名)
以下是我本地的managed-schema文件

注意,不要缺失<uniqueKey>w10_id</uniqueKey>標籤,否則會報錯:

core3: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: QueryElevationComponent requires the schema to have a uniqueKeyField.
第四步:複製stopwords_*.txt文件到D:\solr\core3\lang\目錄下
所有的D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_*.txt文件
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_el.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stopwords_en.txt
it;id;hy;lv;hu;pt;tr;de;hi;da;cz;th;sv; 等等txt文件,總共有31個
第五步:複製以下文件到D:\solr\core3\lang\目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_it.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ca.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\contractions_fr.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\hyphenations_ga.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stemdict_nl.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\lang\stoptags_ja.txt
第六步:複製elevate.xml到conf目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\elevate.xml複製到D:\solr\core3\conf
第七步:複製以下文件到D:\solr\core3\目錄下
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\protwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\synonyms.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\stopwords.txt
D:\solr\solr-6.4.1\example\example-DIH\solr\db\conf\currency.xml
第八步:重啓tomcat,訪問solr,增加core
增加一個core就相當於增加了一個數據庫,solr本就支持數據庫集羣,支持以json格式存儲數據
點擊Core Admin菜單,輸入core信息,點擊Add Core按鈕:
建立成功之後可以查看core3的位置信息:
ps: 如果啓動過程中有遇到*.lock文件而報錯,那麼刪除該lock文件重新建立一遍既可成功。
 
第九步:gui界面導入mysql數據庫
下拉框選擇剛剛建立的core3,選中Dataimport菜單
先檢查core3加載的db-data-config.xml文件是否有效,點擊Reload按鈕校驗,當出現信息No information available時則表示校驗通過。
初次導入選擇full-import全量導入模式,點擊Execute按鈕執行數據導入,頁面右邊顯示Indexing since則表示正在導入中,在導入過程中,點擊Refresh Status則會顯示詳細的導入信息(Requests,Fetched,Skipped),如下圖右圖所示:
如果導入失敗,需要重來一遍,在選擇勾選clean選項(清除之前所有導入索引)外,也可以考慮直接刪除數據文件,地址在core3根目錄下,有個data文件夾:D:\solr\solrhome\core3\data。

注意勾選上選項 Auto-Refresh Status,這個會自動幫你刷新數據導入狀態信息,信息大概變化如下:

請求第一個entity,我這裏是w10,數據10萬量的表

請求第二個entity,我這裏是w100, 數據100萬量的表

 請求第三個entity,我這裏是w1000, 數據1000萬量的表
導入成功後,信息界面顯示如下:
數據導入成solr索引成功,總共花費了5分鐘06秒。這時候就可以去掉勾選項Auto-Refresh Status
 
第十步:gui界面查看導入數據
選擇core3,點擊菜單Query,什麼查詢條件都不要加,點擊Execute Query按鈕
查詢出solr同步數據如下,表示同步mysql數據成功:
 
上圖中,http地址表示此次查詢可以使用這樣的get請求方式,其中status 0 表示查詢成功,params表示此次查詢使用的查詢參數。這裏顯示的全都是默認值。response裏的數據代表查詢到的數據,可以看到已經查詢成功。
 
 第十一步:solr數據狀態

選擇core4,點擊overview,當在tomcat重啓後,有可能出現上圖中的optimize now,並且Optimized狀態顯示爲叉叉,這是solr在告訴你這個core4的數據索引並沒有按照solr的索引排序以達到最佳查詢狀態,只需要點擊optimize now進行索引重新排序就可以了。

但是注意,這需要花費一定時間,所以會損失性能,當然,重新排序後,性能會提高。

 
 
 
 
我是一個女孩,我的英文名是Joyce,我的中文名是朱文。如果你想聯繫我,請發內容至郵箱[email protected] 我將回復你。 I am a girl, my name is Joyce, my Chinese name is 朱文. If you want to contact to me, please send any to email [email protected], I will reply you.

發佈了13 篇原創文章 · 獲贊 9 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章