Windows環境利用Elasticsearch+Kibana+Logstash搭建搜索引擎並實現實時同步MySQL數據,超詳細步驟

背景:博主在做的一個項目是wamp環境下的電商平臺,其搜索方式爲sql查詢,效率低下,準確率也非常感人,所以就嘗試着在Windows環境下搭建一套搜索引擎,經過多方查閱,發現Elasticsearch(簡稱ES)是一個比較好的搜索引擎,也支持JDBC與MYSQL對接,並可以利用RESTful API CURL方式提供搜索服務,獨立性強,擴展性好,於是就決定用它來做開發了。

Step 1:Windows下的JAVA環境配置

首先:下載JDK
然後,按照自己的系統環境安裝JDK,網上很多教程,這裏就略過了。順便說一句Elasticsearch至少需要java8,官方建議高於1.8.0_131。這裏也不建議安裝java10,不然你有可能會遇到這樣的bug。

Unrecognized VM option 'UseParNewGC' 
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

博主裝的是jdk-8u181-windows-x64.exe
安裝的時候還有兩個坑需要數一下,第一,不要安裝JRE,不然它會覆蓋掉tools.jar。第二,jdk不要一路點下去,要提前建立個文件夾,要求路徑裏不能有中文,不能有空格,如果你默認安裝的話,它會安裝到C:\Program Files下,這裏是有空格的,後面的Logstash是無法啓動的。
不要安裝jre

Step 2:下載安裝Elasticsearch

下載Elasticsearch(選擇WINDOWS sha版本)。這裏提醒一下,ES至少需要2GB內存。
解壓所有文件到一個文件夾下。
比如這裏是博主的路徑
然後cmd運行cd /d 你的安裝路徑\bin,比如我我的是cd /d C:\elasticsearch\bin
接着運行elasticsearch.bat即可。
運行之後可以看到這樣的界面。
cmd內容
在瀏覽器輸入localhost:9200,看到這樣的顯示,就是ES啓動成功了。
啓動成功
PS:在cmd界面Ctrl+C即可退出服務,另外,在生產環境下,建議用elasticsearch-service.bat,運行elasticsearch-service.bat install,將其安裝成系統服務。
安裝爲服務

Step 3:安裝Kibana管理調試工具

我們現在已經安裝和運行了ES核心,那麼怎麼樣去查看,配置,以及調試學習呢,這裏就需要Kibana來幫忙了。這裏說句題外話,有很多朋友應該看過ES的官方手冊,裏面提到的調試工具是Head或者Sense,我也安裝過這兩個,踩過坑,實際上用Kibana就夠了,官方手冊因爲寫了太久,所以這裏會給很多新手帶來困擾。
所以,我們直接下載Kibana(WINDOWS sha),然後解壓。
然後用編輯器打開config/kibana.yml文件,搜索elasticsearch.url,找到這一句,把前面的#號去掉,當然,如果你在前兩步不太安分,配置了其他的端口,或者是用多臺機器配置的話,也可以在這裏配置成自己 的URL。
去除#號
保存之後,打開cmd,輸入cd -d C:\kibana\bin(這裏是我的路徑)。
再輸入,kibana.bat,運行Kibana。出現這樣的信息,就是成功了。
運行結果
然後在瀏覽器,輸入localhost:5601,就可以看到Kibana的可視化界面了。具體怎麼用我就不多說了,Kibana有很詳細的手冊可以查,我只說新手最關心的一點:Dev Tools界面就是可以學習,調試ES請求的地方,ES手冊裏的示例,就是在這裏運行的。
調試工具
總結一下:很多人都是先學的數據庫,所以我接下來的說法可能有點不對,但是目前可以這麼去理解:ES相當於數據庫服務,Kibana我們可以把它類比成數據庫管理工具,比如SQLsever Manager Studio或者Navicat等等。
到這裏爲止,ES的應用,或者學習基本框架就搭建好了,現在你就可以很有效率的按照ES的官方文檔一點一點看了。下面我們接着讓它和傳統數據庫打通。

Step 4:安裝部署Logstash

這一步,最好需要你通過之前搭建的學習框架,瞭解ES的基本架構,還有一些核心功能,比如這裏要用到的輸入輸出插件等等。
首先,我們下載Logstash(ZIP sha),解壓。
然後這裏有用的是JDBC型輸入,ES型輸出,所有的細節都體現在一個配置文件裏。在做這個配置文件之前,我們需要到網上下載一個Java的JDBC驅動,我這裏連接的是Mysql數據庫,所以我下載的是mysql-connector-java-5.1.44-bin.jar,這裏沒辦法給鏈接,請自行下載。下載之後,放到C:\logstash\bin下。
然後,在C:\logstash\bin下,創建一個文本文件,寫入以下代碼。

input {
 stdin { }
    jdbc {
        jdbc_connection_string => "jdbc:mysql://localhost:3306/你的數據庫名字"

        jdbc_user => "你的數據庫用戶名"

        jdbc_password => "你的數據庫密碼"

        jdbc_driver_library => "C:/logstash/bin/mysql-connector-java-5.1.44-bin.jar"

        jdbc_driver_class => "com.mysql.jdbc.Driver"

        jdbc_paging_enabled => "true"

        jdbc_page_size => "50000"
        statement => "SELECT id(主鍵),其他內容 FROM 你的表"
        schedule => "* * * * *"
    }
 }

 output {
     stdout {
        codec => json_lines
    }
    elasticsearch {
        hosts => "localhost:9200"
        index => "你要創建的索引名"
        document_type => "你要創建的索引類型"
        document_id => "%{id}"
    }
}

將這個txt文件改名以及後綴,mysqltoes.conf,然後像之前一樣,cmd裏cd進bin文件夾裏。運行logstash -f mysqltoes.conf即可。
當在小黑屏裏看到你數據庫裏的字段一一出現時,說明已經將數據導入到ES了。
數據導入
然後還可以在Kibana裏查看一下。
查看創建的索引
PS:這裏的同步數據庫的配置,是會自動更新的,具體配置的含義, 可以去看一下Logstash的輸入輸出插件的文檔,裏面說的很清楚。
到此爲止,在windows下的ES框架就搭建好了,然後具體怎麼使用它,就看各自的項目要求了,下一篇博客,我會拿電商平臺商品搜索舉例如何使用ES的API

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章