【Elasticsearch 入門公開課】在Docker環境中,實操詳解 ELK 基本概念-回顧篇

講師:阮一鳴——eBay Pronto 平臺技術負責人、極客時間『Elasticsearch 核心技術與實戰』課程講師
課程為了更多同學能快速體驗 Elasticsearch,為大家提供了免費的阿里雲 Elasticsearch (3節點1核2G)的測試環境>>>>去開通

image.png

課程回顧

7 | 在Docker容器中運行Elasticsearch Kibana和 Cerebro
8 | Logstash安裝與導入數據
9 | 基本概念:索引、文檔和REST API
10 | 基本概念:節點、集群、分片及副本

知識點一:在 Docker 容器中運行 Elasticsearch Kibana和 Cerebro

lasticsearch 成立之初就開始擁抱容器技術,官方不僅提供 Docker Image,同時在2019年5月,在發佈7.1版本時,免費支持並提供 Elatic Operator on Kubernetes。而Cerebro 可以很好的讓大家學習瞭解 Elasticsearch 分佈式特性。

image.png

關於在本機運行 Docker 環境去啟動 Elasticsearch 有兩點好處

  • 可以通過一行命令,快速搭建環境
  • 非常快捷的清除數據

Demo 部分請跟隨課程,動手試試吧

image.png

課程相關資料訪問及下載

下載安裝 Docker 與 Docker Compose
https://www.docker.com
https://docs.docker.com/compose
https://docs.docker.com/machine/install-machine/

Docker - Compose 相關命令

• 運行 Docker- compose up
• docker Compose down
• docker Compose down - v
• docker stop / rm containerID

GitHub:https://github.com/onebirdrocks/geektime-ELK/


知識點二:Logstash 安裝與導入數據

我們通過 Elastic 官網下載並安裝 Logstash,並在 Docker 本地運行,下載需要確保版本號跟 Elasticsearch 相一致;

image.png

下載安裝 Logstash:

http://www.elastic.co/downloads/logstash
開通阿里雲 Logstash 2核4G 1個月免費測試環境_點擊開通

通過Movieiens 測試數據集,寫了一個配置文件,並通過 Logstash 將這些數據寫入 Elasticsearch,這些測試數據對於我們學習查詢 Elasticsearch 起到非常關鍵的作用

image.png

下載 Movie Len 數據:

https://grouplens.org/datasets/movielens/

Demo 部分請跟隨課程,動手試試吧

image.png

知識點三:基本概念(1)- 索引,文檔和 REST API

Elasticsearch 中的“索引”和“文檔”是一個邏輯概念,偏向與開發者視角;“文檔”是所有可能搜索數據的最小單位,“索引”是相似文檔的集合。

image.png

關於“文檔”

在 Elasticsearch 中,“文檔”以序列化成 JSON 格式保存,每個文檔均對應一個 Unique ID和元數據,如 【_index-索引名】、【_type-類型名】等

image.png

關於“索引”

在 Elasticsearch 中“索引”是相似文檔的集合,每一個“索引”都有屬於自己的 Mapping 定義文檔,用於描述包含的字段名和類型。每一個索引可以創建一個 “Type”(Elasticsearch 7.0之後),每個“Type”底下有相同結構的文檔。

image.png

與關係型數據庫類比時,當用於全文檢索,Elasticsearch 比較有優勢,往往會將Elasticsearch 與數據庫組合使用。

image.png

關於“REST API”

“REST API”是 Elasticsearch 為了方便其他語言整合,對程序做調用。當程序需要與 Elasticsearch 做集成時,我們僅需發出 HTTP 的請求,就可以得到相應的結果。

image.png

Demo 部分請跟隨課程,動手試試吧

• 查看一些與 index 的相關 API
• 進入 Kinbana Index Management 界面,探索 Index 相關的信息

知識點四:基本概念(2)- 集群 / 節點 / 分片 / 副本

關於“集群”

Elasticsearch 的“集群”是一個分佈式集群,滿足“高可用”、“可拓展”的特性。不僅提供存儲的水平擴容,而且當出現部分節點停止服務,也不影響整個集群的服務。
Elasticsearch 官方也提供 CAT API,來幫助瞭解“集群”健康狀況,用“green”、“yellow”、“red”,分別代表集群“主、副分片分配正常”、“主分片正常分配,副本未正常分配”、“主分片未正常分配

image.png

關於“節點”

“節點”是一個 Elasticsearch 的實例,本質上是一個 JAVA 的進程,當節點啟動後,系統會分配一個 UID,保存著在 Data 目錄下。

不同的節點,會承擔不同的角色

image.png

其他還有很多類型節點,比如需要做日誌 Case 時,有“Hot & Warm Node”、用於機器學習的“Machine Learning Node”;

每個節點啟動,都會讀取 Elasticsearch YML 配置文件,用於決定自己承擔說明角色

image.png

關於“分片/副本”

“分片”分為 Primary Shard & Replica Shard(主、副分片)

image.png

通過分片,將數據分佈在集群節點上,生產環境中,需要提前規劃分片容量

當分片設置過小

  1. 導致後續無法增加節點實現水平擴展
  2. 當分片數據量超過容量,重新分配數據會耗費過多時間

當分片設置過大

  1. 影響搜索結果相關性打分。
  2. 導致統計不準確,影響性能造成浪費。

image.png

Demo 部分請跟隨課程,動手試試吧

• 查看一個集群的健康狀態 http://localhost:9200/_cluster/health
• CAT API

  1. http://localhost:9200/_cat/nodes
  2. 查看索引和分片

• 設置分片數
• Kibana+Cerebro 界面介紹

下週課程預告


點擊預約課程

11 | 文檔的基本CRUD與批量操作
12 | URI Search詳解
13 | 通過Analyzer進行分詞
14 | Search API概覽

相關活動


更多折扣活動,請訪問阿里雲 Elasticsearch 官網

• 阿里雲 Elasticsearch 商業通用版,1核2G首月免費
阿里雲 Elasticsearch 日誌增強版,首月六折,年付六折
阿里雲 Logstash 2核4G首月免費


image.png

image.png

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top