LINUX下使用elasticsearch-jdbc工具實現MySQL同步到ElasticSearch 以及linux 64位centos系統安裝jdk1.8

gb4215287發表於2017-10-09

標籤:

第一步:環境匹配

1)elasticsearch 2.3.3 成功安裝部署 
2)mysql安裝成功,增刪改查無誤~~。 

 技術分享

3)要保證elasticsearch-jdbc的版本要與elasticsearch的版本是一致的(下面的內容會提示下載)。否則會報錯,無法進行之後的步驟。

(例如elasticsearch-jdbc-2.3.3.0-dist.zip(對應的你的elaseticsearh-2.3.3)

4)(linux 64centos下安裝jdk1.8)(我的是CentOS release 6.5 (Final) )

推薦JDK的版本為1.8最好(我一開始是1.7的報錯)--Exception in thread "main" java.lang.UnsupportedClassVersionError: org/xbib/tools/Runner : Unsupported major.minor version 52.0

 

因為jdk 1.7版本是version 51 1.6 的是version 50 因此需要安裝1.8的版本(version 52)為最佳。否則還沒有開始就已經結束了!!!~~

 

rpm -qa|grep jdk     //檢查之前的版本

java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64    //之前的版本

 

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64  //刪除它

 

下載jdk

網址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

選擇

選中Accept License Agreement, 然後打相應的版本點選下載,在這裡只介紹原始碼安裝

centos下安裝jdk1.8

 

1.解壓檔案

tar -zxvf jdk-8u101-linux-x64.tar.gz

2.把解壓的檔案目錄移動到/usr/local

mv jdk1.8.0_101  /usr/local

3.配置環境變數

vi /etc/profile

放在最後即可

#set java JDK

export JAVA_HOME=/usr/local/jdk1.8.0_101/

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

4.使profile馬上生效:

source /etc/profile

5.檢查配置是否成功

java -version

 

第二步:下載JDBC工具

 

選擇你需要的版本進行下載。(例如elasticsearch-jdbc-2.3.3.0-dist.zip(對應的你的elaseticsearh-2.3.3)  ,下載字尾為dist.zip的即可)

地址

http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/

 

第三步:匯入linux下的目錄

解壓下載的檔案unzip elasticsearch-jdbc-2.3.3.0-dist.zip (也可以windows下解壓好再匯入Linux下就無需此條命令了,推薦工具winscp(用它可以把檔案在windows與Linux兩個平臺間互相拖動資料哦),玩linux必備的工具  還有xshell(用法的話自己摸索百度一下咯~~!)) 

我放在預設的根目錄下:/elasticsearch-jdbc-2.3.3.0

 

第四步:同步匯入資料的關鍵,新建指令碼 

cd /elasticsearch-jdbc-2.3.3.0/bin/ (在bin目錄下建立我們的新指令碼)

 

vi import_es.sh

#!/bin/sh

bin=/elasticsearch-jdbc-2.3.3.0/bin

lib=/elasticsearch-jdbc-2.3.3.0/lib

echo ‘{

"type" : "jdbc",

"jdbc": {

"elasticsearch.autodiscover":true,

"elasticsearch.cluster":"ffcs-test",叢集名字:#預設elasticsearch, 詳見elasticsearch.yml

"url":"jdbc:mysql://localhost:3306/test",   #mysql資料庫地址,3306是預設埠,test是資料庫名

"user":"root",                            #mysql使用者名稱

"password":"123456",               #mysql密碼

"sql":"select * from ffcs",           #ffcs是資料庫表名

"index" : "test",                        #自定義索引名

"type" : "ffcs"                           #自定義型別名

}

}‘ | java \

-cp "${lib}/*" \

-Dlog4j.configurationFile=${bin}/log4j2.xml \

org.xbib.tools.Runner \

org.xbib.tools.JDBCImporter

 

注:複製時其中的#漢字不能複製進去,否則會出現各種莫名狀況

 

之後可以把你寫的json內容到www.json.cn驗證是夠正確,若不正確後面又會報錯啦

 

{

"type" : "jdbc",

"jdbc": {

"elasticsearch.autodiscover":true,

"elasticsearch.cluster":"ffcs-test",

"url":"jdbc:mysql://localhost:3306/test",

"user":"root",                       

"password":"123456",           

"sql":"select * from ffcs",          

"index" : "test",                      

"type" : "ffcs"                   

}

}

就是上面的內容 去網站上解析檢檢視看你自己寫的是否有錯誤,避免執行指令碼的時候出現不必要的錯誤

 

為 import_es.sh 新增可執行許可權。 

chmod a+x import_es.sh   //(a+x 是給所有人加上可執行許可權,包括所有者,所屬組,和其他人  o+x 只是給其他人加上可執行許可權)

執行指令碼:./import_es.sh

 

第五步:檢測資料是否新增成功

curl ‘localhost:9200/_cat/indices?pretty‘   //索引是否有新增呢??

curl -XGET ‘http://localhost:9200/test/ffcs/_search?pretty‘ //抓取顯示資料

技術分享

 

通過各種條件查詢

curl ‘localhost:9200/test/ffcs/_search?pretty‘ -d ‘

{

    "filter":{"term":{"name":"john"}}

}‘

技術分享

curl ‘localhost:9200/test/ffcs/_search?pretty‘ -d ‘

{

    "filter":{"term":{"id":"5"}}

}‘

技術分享

 以上都可以就說明你大功告成了哦~~

 

我之前也嘗試過elasticsearch-1.7.1的版本結果出現錯誤

[ERROR][importer.jdbc.source.standard][pool-2-thread-1] while opening read connection: jdbc:mysql://localhost:3306/test No suitable driver found for jdbc:mysql://localhost:3306/test
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test

 

找不到適合的驅動。。。

這樣的情況的話index和type都可以成功建立~,可是裡面是沒資料的哦~~NULL.

 

(希望能幫助到你們!!~~)


來源:http://www.mamicode.com/info-detail-1492805.html

相關文章