Elastic Search入門:架構說明及Docker方式體驗

Elastic Search簡稱ES,是一款在搜索和日誌檢索領域極其成功的開源產品,當然ES背後的商業化公司也很成功。很多大的知名品牌,像是SAP、Booking、Ebay都在使用ES,

image.png

今天就來實際使用一下ES這款成功的商業化產品,並且介紹一下它的特點。

Elastic Search VS Luncence

說到搜索還是要提下Luncence,Luncence基本上可以稱爲搜索領域的鼻祖了,是很早期的索引構建庫。但是Luncence的主要問題有兩點,其一是隻支持Java類庫的調用方式,學習和使用門檻很高,其二是Luncence沒有線性擴展能力。搜索又是一個幾乎隨業務量線性擴張的功能,所以是否支持線性拓展資源很重要。

ES其實是對Luncence的庫的上層封裝,通過Restful的形式可以讓日誌的構建和檢索等功能更容易在多語言環境下調用,做到即使是開發小白也能快速上手。另外,ES支持線性拓展,使得使用ES的用戶不需要擔心資源協調的問題。

image.png

Elastic Search整體架構

image.png

接下來介紹下ES的各個模塊,從下向上介紹。

(1) Beat

Beat是一個輕量的數據採集器,Beat可以採集各種格式的數據,比如日誌文件、值班、網絡數據等,並且把這些數據傳輸到Logstash。

image.png

(2)Logstash

Logstash是一個服務端的數據管道,能夠從多個數據來源採集數據,完成數據轉換,然後將數據傳輸到Elastic Search。在Logstash中可以實現一些數據的過濾、轉碼等功能,比如把非結構化數據轉化成結構化數據,比如從IP地址破譯出地理座標。

(3)Elastic Search

Elastic Search主要做數據和索引的存儲以及相關查詢的計算。

(4)Kibana

Kibana主要是一個數據可視化界面,通過可視化的方式展示ES的計算和索引結果。

image.png

(5)X-Pack

X-Pack是ES內部插件,在老的ES版本是收費的,在新的版本中很多插件是被開源免費使用的。在X-Pack中可以直接使用機器學習、圖關係、安全相關的插件。

所以整體的流程如下,先通過Beat採集數據,然後數據通過管道寫到Logstash做一步處理,接着寫到Elastic Search,然後通過Kibana做數據的可視化展現。

image.png

 

具體操作體驗

 接下來就具體體驗下ES的功能,當然是選擇通過Docker的模式run一下最快。可以參考:

https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

可以選擇通過拉起單一Docker的模式體驗,也可以通過Docker Compose的方式體驗(Docker Compose比較適合構建一個分佈式ES集羣)。我兩個方案都試了試,Docker Compose一堆坑,官方案例都沒跑起來。

具體操作流程如下:

(1) 先Pull一個官方鏡像

 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2

(2) 接着拉起這個鏡像

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.10.2

(3)這個時候ES的服務就已經跑起來了,Docker化的模式就是如此方便,服務的本地地址是localhost:9200。

image.png

(4)發送服務請求到localhost:9200,

curl -X GET "localhost:9200/_cat/nodes?v=true&pretty"

image.png

可以查到ES服務的節點的具體情況。

總結一下

 

ES基本上是目前業內在搜素和日誌檢索領域非常成熟的開源工具,ES有很多豐富的插件,比如Kibana、Logstash,而且ES對於容器化技術非常擁抱,可以快速的做部署。最後一點是ES的全部功能都可以通過一套標準的RestFul接口去調用,這個設計很方便用戶使用。

 

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