四、Elasticsearch基本概念:索引-文檔-分片

Elasticsearch有幾個核心概念,我們先了解一下,對後面的學習有很大的幫忙。

Elasticsearch是一個分佈式文檔(document oriented)存儲。與關係型數據庫數據保存到由行和列不同,Elasticsearch不將信息存儲爲列數據,而是存儲已序列化爲JSON文檔的複雜數據結構。當集羣中有多個Elasticsearch節點時,存儲的文檔分佈在整個集羣中,可以從任何節點立即訪問。它不僅僅是存儲,還會索引(index)每個文檔的內容使之可以被搜索。你可以對文檔進行索引、搜索、排序、過濾。這種理解數據的方式與以往完全不同,這也是Elasticsearch能夠執行復雜的全文搜索的原因之一。

 

集羣

可以將多臺ES服務器作爲一個集羣使用,可以在集羣中任意一臺節點上進行搜索。一個集羣有一個唯一的名字(可以配置文件中修改),節點啓動後通過集羣名稱來確定加入那個集羣(這裏使用了網絡廣播原理),同時單個集羣中只有一個節點會被選舉爲主節點(master)

 

節點

節點是作爲集羣的一部分的單個服務器,存儲數據並參與集羣的索引和搜索功能。每個節點也有一個名稱,默認是啓動時隨機生成一個唯一標識符,建議啓動前指定一個名稱,以便後面的管理。

在ES中,節點主要有3種

1、Coordinating Node  處理請求的節點叫 Coordinating Node

    路由到正確的節點,例如創建索引,就路由到master節點
    所有節點默認都是Coordinating Node

    通過將其他類型設置成False,使其變成Coordinating Node節點

2、Data Node  可以保存數據的節點,就叫Data Node節點

    節點啓動後,默認就是數據節點,可以設置成node.data: false 禁止
    Data Node保存分片數據,在數據擴展上起到至關重要的作用,(由Master Node決定如何把分片分發到數據節點上)
    通過增加數據節點,可以解決數據水平擴展和解決數據單點的問題

3、Master Node  處理創建、刪除索引等請求、決定分片分到那個節點,維護並更新Cluster 狀態

    Master 節點非常重要,在部署的時候需要考慮單點的問題
    爲一個集羣設置多個Master節點/每一個節點只承擔Master單一角色

 

索引(indices

有相似特性的文檔的集合,如:訂單數據索引,產品信息索引。這裏我們可以理解爲【Mysq的l數據庫】。

索引由一個名稱(必須全部是小寫)標識。在單個集羣中,可以定義任意多個索引。

文檔(document)

一個文檔是一個可被索引的基礎信息單元。文檔以JSON(Javascript Object Notation)格式來表示。如:一條商品信息可以是一個文檔,一筆訂單信息也是一個文檔。

索引、文檔 與Mysql對比理解
索引(indices)--> 數據庫

文檔(Document)--> Row 行

字段(Field)-->Columns 列 (Json中的Key)

分片

作用:用於解決文檔過多過大,單個節點存儲不了的問題,同時對太多太大的數據量會導致速度太慢。

一個分片(shard)是一個最小級別“工作單元(worker unit)”,分片保存了一個索引中所有數據的一部分。當索引創建完成的時候,主分片的數量就固定了,但是複製分片的數量可以隨時調整。

副本

可以簡單理解就是某個分片的一個複製版本(一個主分片可以有多個副本)。當分片/節點發生故障時提供高可用性,需要注意的是,副本分片永遠不會分配到複製它的原始/主分片所在的節點上。

 

以上是一些核心概念,下面我們會配置集羣和分片的操作

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