ElasticSearch學習(一)

        ElasticSearch是一款基於Lucene的功能強大的開源分佈式搜索與數據分析引擎,它具有高性能、易於擴展的優點,不僅可以從海量數據中快速找到相關信息,還被廣泛運用於大數據近實時的分析,包括日誌分析、指標監控、信息安全等多個領域。

        相關鏈接:

        ElasticSearch官網

        Elastic公司技術博客

        Elastic中文社區

        常聽的ELK,即ElasticSearch、Logstash、Kibana,可以搭建一個完整的數據採集、存儲、可視化的平臺,這裏來先動手實踐,對其流程有一個感官的理解,後面再慢慢去深入瞭解ElasticSearch的各種高級用法。首先,需要下載ELK三件套,注意,這三者的版本必須一致,否則無法正常進行數據採集,我這裏採用的是7.5.0版本的:

        

        另外還需要注意的是,安裝之前需要JDK環境的支持,JAVA_HOME的配置這裏就不多說了。

安裝ElasticSsearch

        下載ES壓縮包,解壓後目錄結構如下所示:

        

        目錄說明:    

bin ES的各種功能的腳本文件
config elasticsearch.yml文件重點關注,配置ES的,另外還有登錄用戶的配置文件
data ES節點存儲數據文件的目錄
jdk 7.x版本後自帶JDK依賴,方便配置環境
lib Java類庫
logs 運行日誌輸出的目錄
modules 包含的ES模塊
plugins 包含ES已安裝的插件

        配置elasticsearch.yml:

        

        配置jvm.options:

        

        還有一點要注意,上面值得設置不要超過30GB大小。

        配置完成後,運行bin目錄下的腳本文件:        

        檢查確認啓動成功:

        

        注意這裏,cluster_name,是ES集羣的名稱,這裏只是單機的一個實例,單一個集羣有多個節點時,需要確保集羣名稱一樣,可以通過如下方式在本機啓動一個集羣的多個節點:

        elasticsearch.bat -E node.name=linjk_1 -E cluster.name=linjk -E path.data=xxx -E http.port=3358

        elasticsearch.bat -E node.name=linjk_2 -E cluster.name=linjk -E path.data=xxx -E http.port=3359

        elasticsearch.bat -E node.name=linjk_3 -E cluster.name=linjk -E path.data=xxx -E http.port=3360

        然後可通過URL查看當前集羣有多少個節點:

       

        爲了後面方便,這裏安裝了IK中文分詞器:

       elasticsearch-plugin.bat install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.0/elasticsearch-analysis-ik-7.5.0.zip           

        安裝完成後,重啓ES,查看安裝的插件:

        

      ES配置用戶名密碼:      

      提示需要配置X-Pack,配置如下:

      

      重啓ES,重新配置密碼:(這裏我都用了一個密碼`ljk121`)      

      這是再訪問http://localhost:3358,就會彈出登錄對話框了:

     

安裝Kibana

        上面是通過瀏覽器去調用ES提供的一些API,但是隻能發GET請求,後面需要發POST請求去查詢一些數據就不方便了,這裏可以藉助Kibana這個工具,啓動Kibana很簡單,修改其配置文件,然後執行bin目錄下的bat或sh腳本即可,注意,ES首先需要啓動,在這裏ES是服務端,Kibana是客戶端。

        修改配置文件kibana.yml:

        

        

        啓動:        

        驗證:【http://localhost:5601

        

        圈住的Dev Tools很有用,如下所示:

       

        可以很方便運行ES提供的一些API函數。這裏暫時就用到Kibana的Dev Tools,其他功能後面再慢慢探索。

安裝Logstash

        有了存儲數據的ES和可視化工具Kibana,現在就需要從數據庫導入數據到ES了,這裏從MySQL導入數據到ES,以藉助ES強大的搜索和分析能力去進一步實現後面的業務功能。

        新建一個測試庫和測試表:

        

        

        新建Logstash導入數據的配置文件:        

input {
	jdbc {
		jdbc_driver_library => "D:\\usr\\pathvar\\kettle\\lib\\mysql-connector-java-5.1.47.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://localhost:3308/es_test"
		jdbc_user => "root"
		jdbc_password => "xxxxx"
		schedule => "* * * * *"
		statement => "SELECT * FROM t_user_account WHERE update_time >= :sql_last_value"
        # statement_filepath => "./config/jdbc.sql"
		use_column_value => true
		tracking_column_type => "timestamp"
		tracking_column => "update_time"
		last_run_metadata_path => "syncpoint_table"
	}
}

output {
	elasticsearch {
		# ES的IP地址及端口
		# hosts => ["localhost:3358", "localhost:3359"]
		hosts => "http://localhost:3358"
		# 索引名稱
		index => "es_test"
		# 關聯的數據庫中有一個id字段,對應類型中的id,無則ES自己生成
		document_id => "%{id}"
		document_type => "user"
		}
	stdout {
		# JSON格式輸出
		codec => json_lines
	}
}

        編寫後最好測試一下配置文件是否有語法問題:        

        沒問題,啓動:        

        報錯:        

        解決:

    

        下載安裝插件:

       https://github.com/logstash-plugins/logstash-input-jdbc/releases/tag/v4.3.19       

        然後安裝:(生成gem文件這一步需要先安裝Ruby)        

        再次啓動,可以看到,在執行數據同步了:        

        去ES查詢驗證一下:        

        可以看到,在ES可以看到了,接下來,在MySQL修改這條數據,看是否也能同步更新ES的數據,同步的時間最小粒度是1分鐘,可以看到,數據也變化了。

        好了,從採集數據到存儲到ES的鏈路走通了,後面學習再記錄了。

        

 

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