Elasticsearch 5.0-基礎概念

Elasticsearch 5.0-基礎概念

標籤 : Elasticsearch



本文是 Elasticsearch 5.0 系列博文的基礎概念篇,主要介紹集羣,節點,索引,類型,文檔,分片,副本等基礎概念

寫在前面

  • 本文以 Elasticsearch 5.0.1 版本爲例進行講解,不定期更新
  • 該系列主要參考的 Elasticsearch Reference: 5.0,儘量避免照搬翻譯,只摘錄精要部分輔以簡單說明
  • 寫這個系列博客的初衷是強迫自己梳理,同時方便一些較忙/沒空耐心看英文文檔的朋友快速上手,建議讀者有空多讀官方文檔,畢竟別人寫的都是二手資料
  • 如需查看 ES 系列更多博文,請關注我的個人網站@brianway 或者 @CSDN

基本概念

有關概念在Basic Concepts中已經介紹的很詳細了,這裏簡單說一下。

  • 集羣(cluster):集羣由一個或者多個節點組成,由名稱唯一標識
  • 節點(node):一個單獨的 Elasticsearch 實例
  • 索引(index):文檔的集合
  • 類型(type):索引的邏輯分類/分區
  • 文檔(document):能夠被索引的信息基礎單元
  • 分片(shard):索引的物理分區,是一個最小的 Lucene 索引單元。分爲 primary shard(主分片) 和 replica shard(簡稱replicas)。
  • 副本/備份(replicas):主分片的備份

下面就這幾個概念進一步說明

類比關係型數據庫

其中索引,類型,文檔的概念可以類比關係型數據庫

Elasticsearch 關係型數據庫
索引(index) 數據庫(database)
類型(type) 表(table)
文檔(document) 行記錄(row)
字段(field) 列(column)

爲什麼有shard和replica

爲什麼有 shard?

  • 可以水平切分和擴展內容容量
  • 在shards 間分發和並行執行操作,從而提供性能和吞吐量

爲什麼有replica?

  • 當 shard 失效時提供高可用性。因爲這個原因,一個primary shard的replica不會分配到和該shard所處的同一節點
  • 擴展查詢的容量/吞吐量,因爲查詢操作是一個讀操作,可以在所有replica上並行執行

其他補充

Elasticsearch 默認爲每個 index 創建 5 個主分片,且備份數爲 1。也就是說,每個索引由 5 個主分片組成,並且每個分片擁有一個備份。需要注意的是,主分片的數量一旦確定,之後是不能更改的(除非重新建立索引),而 replicas 的數量可以在之後隨時更改。

所以在上一篇文章中,我們啓動 Kibana 後在 Consonle 查詢索引狀態GET /_cat/indices?v,會發現 healthyellow 而不是 green,就是因爲我們只開啓了一個節點,而且 Kibana 啓動後在 Elasticsearch 中建立了一個默認索引 .kibana,該索引只有 1 個主分片和一個副本,故 shard 都在該節點上,而 shard 的副本不能和該 shard 分配在同一節點,故未生效,從而導致狀態是黃色。

另外,每個索引被分配到多個分片,但 number_of_shards 的值只適用於索引,而不是整個集羣。這個值指定了每個索引的分片數,而非整個集羣中的全部主分片數。(摘自Optimizing Elasticsearch: How Many Shards per Index?


作者@brianway更多文章:個人網站 | CSDN | oschina

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