ElasticSearch(五) Elasticsearch-jdbc實現MySQL同步到ElasticSearch


按照之前的四篇文章,走到現在,接下來就是需要安裝jdbc了。這里是用的是jdbc的2.3.4.0版本,雖然按照官方給出的對應版本對應不上,https://github.com/jprante/elasticsearch-jdbc,但是實際測試,是可以支持的。

下載解壓並移動到/usr/local/jdbc目錄

#wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.4.0/elasticsearch-jdbc-2.3.4.0-dist.zip //wget下載地址
# unzip elasticsearch-jdbc-2.3.4.0-dist.zip # mv elasticsearch-jdbc-2.3.4.0-dist.zip /usr/local/jdbc/

配置環境變量

# vim /etc/profile //把下面兩行代碼放入底部
export JDBC_HOME=/usr/local/jdbc export ES_HOME=/usr/local/elasticsearch # source /etc/profile  //生效

接下來創建導入腳本

# cd /usr/local/ # mkdir shell shell/logs # vim mysql-elasticsearch.sh
#腳本內容 #!/bin/sh bin=$JDBC_HOME/bin lib=$JDBC_HOME/lib echo '{ "type" : "jdbc", "jdbc": {       "elasticsearch.autodiscover":true,       "elasticsearch.cluster":"my-application", #簇名,對應好配置       "url":"jdbc:mysql://192.168.9.155:3306/hb",     #mysql地址/端口/庫名       "user":"root", #Mysql賬號       "password":"wt000000", #Mysql密碼       "sql":"select product_name,id as _id from hp_product where id >10 limit 10 ", #SQL語句 .........注意的是,這里只是測試,在實際配置中需要對應好要存入文檔的字段,同樣表的主見id對應文檔id       "elasticsearch" : {
"cluster":"my-application",         
"host" : "192.168.9.155",         "port" : 9300        },       "index" : "myindex", #新的index,這里測試的是商品表,用的index是myindex,其實可以規范命名~       "type" : "mytype" #新的type,類型也可以規范命名    } }'| java \ -cp "${lib}/*" \ -Dlog4j.configurationFile=${bin}/log4j2.xml \ org.xbib.tools.Runner \ org.xbib.tools.JDBCImporter
# chmod a+x mysql-elasticsearch.sh   //賦予權限
# ./mysql-elasticsearch.sh   //執行腳本

執行完成之后,查看一下日志文件,[INFO]成功信息~

cat /usr/local/shell/logs/jdbc.log

# curl -XGET 'http://192.168.9.155:9200/myindex/mytype/_search?pretty'    
{ "took" : 14, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "failed" : 0 }, "hits" : { "total" : 10, "max_score" : 1.0, "hits" : [ { "_index" : "myindex", "_type" : "mytype", "_id" : "14", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 剪刀石頭布原花混合茶 10包" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "19", "_score" : 1.0, "_source" : { "product_name" : "L'Occitane 歐舒丹 蠟菊賦顏精華液 30ml" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "12", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 烏克麗麗原花混合茶 10包" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "15", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 魔法精靈原花混合茶12包/盒" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "20", "_score" : 1.0, "_source" : { "product_name" : "Bobbi Brown波比布朗 彈力保濕精華液 30ml" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "13", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 挪威森林原花混合茶 10包" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "16", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 涌雪原花混合茶12包/盒" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "18", "_score" : 1.0, "_source" : { "product_name" : "L’Occitane 歐舒丹蠟菊亮白水凝精華液 30ml" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "11", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 艾麗莎原花混合茶12包" } }, { "_index" : "myindex", "_type" : "mytype", "_id" : "17", "_score" : 1.0, "_source" : { "product_name" : "兌點茶 菩蘭原花混合茶12包" } } ] } }

 OK~

 

 

 

 

附加----

#!/bin/sh
bin=$JDBC_HOME/bin
lib=$JDBC_HOME/lib
echo '{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://172.16.10.XXX:3306/db_car",
        "user" : "write",
        "password" : "write",
        "sql" : "select id,title,fnStripTags(content) as content,click_num,keywords,UNIX_TIMESTAMP(updated) as update_time from t_knowledgenew",
    "elasticsearch" : {
        "cluster": "my-application",
        "host" : "172.16.170.XXX",
        "port" : 9300
    },
    "index" : "knowledge_index",
    "type" : "knowledge"
    }
}' | java \
       -cp "${lib}/*" \
       -Dlog4j.configurationFile=${bin}/log4j2.xml \
       org.xbib.tools.Runner \
       org.xbib.tools.JDBCImporter

通過命令查看es中數據

curl -XGET 'http://XXX.XXX.XXX.XXX:9200/knowledge_index/knowledge/_search?pretty'   

 刪除指定索引

# curl -XDELETE 'http://172.16.170.122:9200/index_name'

 

 

 

 

 

實時同步。

https://github.com/m358807551/mysqlsmom


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM