Elastic學習之旅 (3) ES必備基本概念

大家好,我是Edison。

上一篇:快速安裝ELK

ES都有哪些基本概念

在學習ES時,需要掌握一些必備概念,有了這些基本概念,後續的學習纔會輕鬆。我們可以從下圖中瞭解,ES都有哪些基本概念。

從上圖可以知道,ES存在以下的一些核心基本概念:

  • Index索引

    • Document文檔

  • Node節點

    • Shard分片(Primary Shard / Replica Shard)

索引

Index 索引可以理解爲關係型數據庫中的Table,它是一類文檔的集合。又或者可以理解爲MongoDB中的Collection,也是一類文檔的集合。剛好,ES中也有文檔的概念。

下圖中的movies就是一個index,這是我們上次導入的9700多個文檔的集合名字。

快速理解:索引是文檔的容器,是一類文檔的集合

文檔

和MongoDB一樣,也有文檔的概念,它是ES中所有可搜索數據的最小單位,它也支持數組 和 嵌套。

ES中的文檔都會被序列化爲JSON格式進行保存,每個文檔都有一個Unique ID,這個Unique ID可以由我們自定義生成,也可以通過ES自動生成。

此外,每個文檔都有一些元數據,用於標註該文檔的相關信息。

現在,我們來和關係型數據的基本概念對比一下,是不是和當時學MongoDB時差不多啊:

REST API

ES提供了REST API,可以很容易地被各種開發語言開發的客戶端應用程序進行調用。

最常見的API如操作Index的:創建Index 和 查看所有Index。

集羣 / 節點

我們知道了,ES採用了分佈式架構,可以做到存儲的水平擴容,還提高了系統的可用性。

不同的ES節點可以構成一個集羣,不同的集羣可以通過不同的名字來區分,比如在上一節我們進行docker部署時,就指定了一個集羣名字爲“edisontalk”,這個集羣由兩個ES實例構成。

elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_01
    environment:
      - cluster.name=edisontalk
      - node.name=es7_01
      ......

ES節點從本質上來說,就是一個Java進程,每一個節點都有名字,比如上面我們定義了節點名字爲“es7_01”。

當多個節點構成集羣后,會選出一個Master節點,其他節點則爲Data節點只保存數據,和其他分佈式主從結構系統類似,Master節點維護了一個集羣中的必要的信息,對於ES來說,包括了:所有的節點信息、所有的索引和相關的Mapping和Setting信息、分片的路由信息等。

ES節點從本質上來說,就是一個Java進程,每一個節點都有名字,比如上面我們定義了節點名字爲“es7_01”。

當多個節點構成集羣后,會選出一個Master節點,其他節點則爲Data節點只保存數據,和其他分佈式主從結構系統類似,Master節點維護了一個集羣中的必要的信息,對於ES來說,包括了:所有的節點信息、所有的索引和相關的Mapping和Setting信息、分片的路由信息等。

分片 / 副本

和MongoDB一樣,ES也有分片的概念,它主要用於解決數據水平擴展的問題。只不過,在ES中,還區分了主分片 和 副本分片的概念。

通過主分片,可以將數據分佈到集羣內的所有節點之上,一個分片是一個運行的Lucene實例,索引的一部分或全部數據。

副本分片,則是主分片的拷貝,主要用於解決數據高可用的問題。比如,通過增加副本分片數量,可以讓數據在集羣中不同節點上都有備份。

我們可以通過 _cluster/health 查詢一個集羣的健康狀況:

通過status=green,我們知道該集羣主分片和副本都正常分配了,屬於健康狀態。

但如果看到status=yellow 或 red,則代表住分片正常分配但有副本未能正常分配,或者有主分片未能分配(比如服務器的磁盤使用量>=85%的時候創建一個新的Index)。

同時,我們還可以從返回的JSON數據知道集羣的節點數 和 分片數。

此外,我們可以通過 _cat/nodes 瞭解集羣的節點基本信息:

小結

本篇,我們瞭解了ElasticSearch的一些必備基礎概念,如索引、文檔、集羣、節點、分片與副本等。有了這些基本概念,我們可以知道ElasticSearch和關係型數據庫的差別。

下一篇,我們就開始ElasticSearch的文檔CRUD操作!

參考資料

極客時間,阮一鳴,《ElasticSearch核心技術與實戰

 

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