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

關於在本機運行 Docker 環境去啟動 Elasticsearch 有兩點好處
- 可以通過一行命令,快速搭建環境
- 非常快捷的清除數據
Demo 部分請跟隨課程,動手試試吧

課程相關資料訪問及下載
下載安裝 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 相一致;

下載安裝 Logstash:
http://www.elastic.co/downloads/logstash
開通阿里雲 Logstash 2核4G 1個月免費測試環境_點擊開通
通過Movieiens 測試數據集,寫了一個配置文件,並通過 Logstash 將這些數據寫入 Elasticsearch,這些測試數據對於我們學習查詢 Elasticsearch 起到非常關鍵的作用

下載 Movie Len 數據:
https://grouplens.org/datasets/movielens/
Demo 部分請跟隨課程,動手試試吧

知識點三:基本概念(1)- 索引,文檔和 REST API
Elasticsearch 中的“索引”和“文檔”是一個邏輯概念,偏向與開發者視角;“文檔”是所有可能搜索數據的最小單位,“索引”是相似文檔的集合。

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

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

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

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

Demo 部分請跟隨課程,動手試試吧
• 查看一些與 index 的相關 API
• 進入 Kinbana Index Management 界面,探索 Index 相關的信息
知識點四:基本概念(2)- 集群 / 節點 / 分片 / 副本
關於“集群”
Elasticsearch 的“集群”是一個分佈式集群,滿足“高可用”、“可拓展”的特性。不僅提供存儲的水平擴容,而且當出現部分節點停止服務,也不影響整個集群的服務。
Elasticsearch 官方也提供 CAT API,來幫助瞭解“集群”健康狀況,用“green”、“yellow”、“red”,分別代表集群“主、副分片分配正常”、“主分片正常分配,副本未正常分配”、“主分片未正常分配

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

其他還有很多類型節點,比如需要做日誌 Case 時,有“Hot & Warm Node”、用於機器學習的“Machine Learning Node”;
每個節點啟動,都會讀取 Elasticsearch YML 配置文件,用於決定自己承擔說明角色

關於“分片/副本”
“分片”分為 Primary Shard & Replica Shard(主、副分片)

通過分片,將數據分佈在集群節點上,生產環境中,需要提前規劃分片容量
當分片設置過小
- 導致後續無法增加節點實現水平擴展
- 當分片數據量超過容量,重新分配數據會耗費過多時間
當分片設置過大
- 影響搜索結果相關性打分。
- 導致統計不準確,影響性能造成浪費。

Demo 部分請跟隨課程,動手試試吧
• 查看一個集群的健康狀態 http://localhost:9200/_cluster/health
• CAT API
- http://localhost:9200/_cat/nodes
- 查看索引和分片
• 設置分片數
• Kibana+Cerebro 界面介紹
下週課程預告
點擊預約課程
11 | 文檔的基本CRUD與批量操作
12 | URI Search詳解
13 | 通過Analyzer進行分詞
14 | Search API概覽
相關活動
更多折扣活動,請訪問阿里雲 Elasticsearch 官網
• 阿里雲 Elasticsearch 商業通用版,1核2G首月免費
• 阿里雲 Elasticsearch 日誌增強版,首月六折,年付六折
• 阿里雲 Logstash 2核4G首月免費


