原創做者,公衆號【程序員讀書】,歡迎關注公衆號,轉載文章請註明出處哦。node
相信不少作開發的小夥伴對Elasticsearch
應該都聽過或有必定的瞭解吧,畢竟Elasticsearch
是時下最火的開源全文搜索引擎。linux
除了搜索功能以外,Elasticsearch
也是一款大數據分析引擎,能夠用於大數據實時分析,好比用於日誌分析、指標監控、信息安全等方面,而要完成這些功能,則還須要與其餘組件配合,這即是咱們如今要講的Elastic Stack
。程序員
Elastic Stack
是一套構建在開源基礎之上,可讓咱們安全可靠地採集任何來源、任何格式的數據,而且實時地對數據進行搜索、分析和可視化工具鏈。docker
從上面這段定義能夠看出Elastic Stack
的幾個特色:採集、轉換、搜索、分析、可視化,這些功能分別由ElasticSearch
、Kibana
、Beats
、Logstash
這幾個組件來實現。api
Elasticsearch
是Elastic Static
的核心,能夠用Elasticsearch
來存儲咱們的文檔數據,利用Elasticsearch強大的搜索和分析功能爲咱們的網站提供支持,ElasticSearch
是分佈式搜索引擎和大數據實時分析引擎,能夠實時分析計算數據並得出結果,還能夠經過Kibana
的各類圖表將分析結果可視化。瀏覽器
下面的思惟導圖,是我學習Elasticsearch
的一點簡單的梳理:安全
一圖勝萬言,Kibana
是Elastic Stack
產品中的一款可視化工具,支持柱狀圖、線狀圖、餅圖、旭日圖等多種圖形,還可使用Vega
語法來設計獨屬於咱們本身的可視化圖形。bash
經過Kibana
能夠實時呈現Elastichsearch
聚合分析的數據,看到數據的趨勢,爲決策提供依據。服務器
Beats
是一個輕量型採集器的平臺,集合了多種輕量級的、單一的數據採集器,幾乎能夠兼容全部的數據類型,這些採集器能夠從成千上萬的系統中採集數據並向Logstash
和Elasticsearch
發送數據。restful
下面是Beats
支持的採集器列表:
固然,若是上面提供的採集器沒法知足咱們的需求,Beats
也支持自定義採集器。
Logstash
是開源的服務器端數據處理管道,可以同時從多個來源採集數據,轉換數據,而後將數據發送到您最喜歡的存儲庫中,通常就是發送到Elasticsearch
當中。
從上面的定義中,咱們能夠看出,Logstash
與Beats
有相似的功能,而實際上,Logstash
的功能比Beats
更強大,Logstash
支持豐富的過濾器,能夠經過過濾器將很是結構化的數據轉換成結構化的數據,以下圖所示:
經過上面的介紹,咱們應該對Elastich Stack
中各個組件的功能有所瞭解,下面咱們經過示圖意瞭解一下各組件之間的關係:
Elastic Stack
支持多種不一樣的操做系統,不一樣的操做系統也支持多種不一樣的安裝方式,咱們只是介紹在Linux
操做系統的安裝過程,使用的版本是最新的7.2
。
在7.0
以前的版本,安裝Elasticsearch
以前須要先安裝Java SDK
,在7.0
以後,在Elasticsearch
的安裝中包含了Java SDK
ElasticSearch
支持多種操做系統,下面的示例是在Linux
上的安裝過程:
# 下載壓縮安裝包
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
# 解壓
$ tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz
# 修改安裝目錄名稱,不改也能夠的
$ mv elasticsearch-7.2.0-linux-x86_64 /usr/local/elasticsearch
複製代碼
安裝的過程很是簡單,直接解壓即可以了。
# 進入到elasticsearch安裝目錄
$ cd /usr/local/elasticsearch
# 在elasticsearch安裝目錄運行如下命令
$ bin/elasticsearch
複製代碼
除了本身下載安裝外,能夠elasticsearch的docker鏡像進行安裝,這種方式也很方便。
# 拉取elasticsearch的docker鏡像
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.2.0
# 運行鏡像,建立容器
$ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.2.0
複製代碼
在瀏覽器輸入地址http://localhost:9200
,或使用在命令行中使用curl
工具,輸入如下語句:
$ curl http://localhost:9200
複製代碼
若是在瀏覽器或命令中輸出以下Elasticsearch的狀態信息,則說明已經安裝成功。
{
"name" : "localhost.localdomain",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "IcfpUJx8TOOU9udd2fXWkw",
"version" : {
"number" : "7.2.0",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "508c38a",
"build_date" : "2019-06-20T15:54:18.811730Z",
"build_snapshot" : false,
"lucene_version" : "8.0.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
複製代碼
在安裝成功後,即可以調用Elasticsearch
提供的restful api
,往Elasticsearch
建立索引和文檔,開始Elasticsearch
的學習了。
# 使用wget命令獲取安裝包
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-7.2.0-linux-x86_64.tar.gz
#解壓
$ tar -zxvf kibana-7.2.0-linux-x86_64.tar.gz
# 修改安裝目錄名稱,不改也能夠的
$ mv kibana-7.2.0-linux-x86_64 /usr/local/kibana
複製代碼
上面簡單兩條命令便已經安裝好了kibana
。
安裝成功後,可使用如下命令啓動kibana
。
# 進入kibana安裝目錄
$ cd /usr/local/kibana
# 運行命令啓動
$ bin/kibana
複製代碼
安裝成功後,Kibana默認運行在5601
端口,所以在瀏覽器中輸入http://localhost:5601
,若是安裝成功,則會進入以下界面:
Beats
是一個多種單一採集器的平臺,每一種採集器都須要單獨安裝,所以咱們能夠根據本身的須要進行安裝,下面以Filebeat
安裝爲例:
# 下載安裝包
$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-linux-x86_64.tar.gz
# 解壓
$ tar -zxvf filebeat-7.2.0-linux-x86_64.tar.gz
# 修改安裝目錄名稱,不改也能夠的
$ mv filebeat-7.2.0-linux-x86_64 /usr/local/filebeat
複製代碼
# 啓動
/usr/local/filebeat/filebeat -e -c filebeat.yml
複製代碼
# 下載
$ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.tar.gz
#解壓
$ tar -zxvf logstash-7.2.0.tar.gz
# 修改安裝目錄名稱,不改也能夠的
$ mv logstash-7.2.0 /usr/local/logstash
複製代碼
啓動logstash
時,須要指定一個配置文件,配置文件的結構通常是下面的結構,input
指定數據來源,filter
指定過濾器,output
指定輸出。
input {
...
}
filter {
...
}
output {
...
}
複製代碼
好比咱們使用下面的logstash.conf
文件,將一個txt
文件的每一行記錄導入到elasticsearch
中:
input {
file {
path => "/data/users.txt"
start_position => beginning
}
}
filter {
txt {
separator => ","
columns => ["id","username","age"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "user_list"
document_id => "%{id}"
}
stdout {}
}
複製代碼
接下來使用下面的命令,即可以啓動logstash
了。
# 運行
logstash -f logstash.conf
複製代碼
在這篇文章中,咱們只是對Elastic Stack
創建一個全面的瞭解以及如何安裝,而對Elastic Stack
的使用與開發,則須要在後續中更多地學習。
你的關注,是我寫做路上最大的鼓勵!