一文搞懂 Elasticsearch 基本概念

  1. Cluster 和 Node

    Cluster 是對外提供搜索服務(wù)的集群,組成這個 Cluster 的各個節(jié)點叫做 Node。節(jié)點 Node 是 Elasticsearch 運行的實例;集群 Cluster 是一組有著同樣 cluster.name 的節(jié)點,它們協(xié)同工作,互相分享數(shù)據(jù),提供了故障轉(zhuǎn)移和擴展的功能。Node 又可分為 IndexNode(提供讀寫)、DataNode(只提供數(shù)據(jù)存儲和訪問,負(fù)載均衡)等。節(jié)點之間是對等關(guān)系的(去中心化),而弱化的 Master 節(jié)點只不過多了維護集群狀態(tài)的功能。每個節(jié)點上面的集群狀態(tài)數(shù)據(jù)都是實時同步的。如果 Master 節(jié)點出故障,按照預(yù)定的程序,其他一臺 Node 機器會被選舉成為新的 Master。

  2. Shards

    Elasticsearch 將一個完整的索引分成若干部分,每個部分就是一個 Shards,每個 Shard 實際上就是一個基于 Lucene 的索引。Shards 存儲在相同或不同的 Node 上;Shards 的數(shù)量一般在索引創(chuàng)建前指定,且索引創(chuàng)建后不能更改(其初始配置也是可以修改的)。檢索時,Elasticsearch 會將查詢發(fā)送到不同的 Shards 上并將返回結(jié)果合并,這個過程對用戶來說是透明的。

  3. Replicas

    Replicas 是索引的冗余備份,可用于防止數(shù)據(jù)丟失或用來做負(fù)載均衡。一般地,Elasticsearch 會自動對搜索請求進行負(fù)載均衡。

  4. Recovery

    在有節(jié)點加入或退出集群 Cluster 或故障節(jié)點重新啟動時,Elasticsearch 會根據(jù)機器的負(fù)載情況,對索引分片 Shards 進行重新分配。

  5. River

    River 是一個運行在 Elasticsearch 集群內(nèi)部的插件,主要用來從外部獲取異構(gòu)數(shù)據(jù),然后在 Elasticsearch 里創(chuàng)建索引。常見的有 RabbitMQ river Plugin、Twitter river Plugin、Wikipedia river Plugin 、MongoDB river Plugin 、JDBC river Plugin等。

  6. Gateway

    Gateway 是Elasticsearch 索引數(shù)據(jù)快照的存儲方式,當(dāng) es 集群關(guān)閉再重新啟動時,就會從 Gateway 中讀取索引快照。es 支持多種類型的 Gateway,有本地文件系統(tǒng)(像普通的 Lucene 索引一樣,這也是默認(rèn)方式)、分布式文件系統(tǒng)(如 freeds)、Hadoop 的 HDFS 和 Amazon 的 S3 云存儲服務(wù)等。

    Gateway 與 workDir的區(qū)別:Gateway 存儲完整的索引數(shù)據(jù),workDir 對外提供相應(yīng)查詢操作;Gateway 可以是本地文件系統(tǒng)、共享文件系統(tǒng)或 HDFS 等云存儲,workDir 可以是內(nèi)存、本地文件系統(tǒng)或者兩者結(jié)合;Gateway 被假設(shè)是可靠的,持久化的數(shù)據(jù)存儲,workDir 被假設(shè)是不安全的運行環(huán)境,數(shù)據(jù)允許丟失。

  7. Discovery.zen

    Discovery.zen 代表 es 的自動發(fā)現(xiàn)節(jié)點機制。Zen 用來實現(xiàn)節(jié)點自動發(fā)現(xiàn)和 Master 節(jié)點選舉,Master 節(jié)瞇負(fù)責(zé)處理節(jié)點的加入和退出以及分片 Shard 的重新分配。Master 不是固定不變的,當(dāng)前 Master 出故障后,其他節(jié)點自動選舉產(chǎn)生新的 Master。只有當(dāng)節(jié)點準(zhǔn)備就緒以后,該節(jié)點才會被通知可以被使用。在 config/elasticsearch.yml 中可以進行相應(yīng)參數(shù)的設(shè)置。

    es 是一個基于 P2P 的系統(tǒng),它通過廣播機制尋找存在的節(jié)點,再通過多播協(xié)議來進行節(jié)點間的通信,同時也支持點對點的交互。因此,需要節(jié)點發(fā)現(xiàn)與 Master 選舉機制。

  8. Transport

    Transport 代表 es 內(nèi)部節(jié)點或集群與客戶端的交互方式,默認(rèn)內(nèi)部是使用 TCP 協(xié)議進行交互,同時它支持 HTTP 協(xié)議(JSON 格式)、Thrift、Servlet、Memcached、ZeroMQ 等的傳輸協(xié)議(通過插件方式集成)

  9. Index、Type、Document、Field

    • Index 是 es 存儲數(shù)據(jù)的地方,可以快速高效地對索引中的數(shù)據(jù)進行全文索引,類似于 RDBMS 數(shù)據(jù)中的 Database。
    • Type 類似于 Database 中的 Table,用來存放具體數(shù)據(jù),在 Index 下一般會有多個存放數(shù)據(jù)的 Type。
    • Document 是類似關(guān)系數(shù)據(jù)庫中的一行數(shù)據(jù),在一個 Type 里的每一個 Document 都有一個唯一的 ID 作為區(qū)分,這里與 RDBMS 不同的是,Document 不需要有固定的結(jié)構(gòu),不同文檔可以具有不同的字段集合;
    • Field 類似關(guān)系數(shù)據(jù)庫的某一列,是 es 數(shù)據(jù)存儲的最小單位。
關(guān)系型數(shù)據(jù)庫 | Elasticsearch
---|---
數(shù)據(jù)庫 Database | 索引 Index,支持全文檢索
表 Table | 類型 Type
數(shù)據(jù)行 Row | 文檔 Document,但不需要固定結(jié)構(gòu),不同文檔可以具有不同字段集合
數(shù)據(jù)列 Column | 字段 Field
模型 Schema | 映像 Mapping
  1. Mapping

    Mapping 定義索引下 Type 的字段處理規(guī)則,如索引如何建立、索引數(shù)據(jù)類型、是否保存原始索引 JSON 文檔、是否壓縮原始 JSON 文檔、是否需要分詞處理、如何進行分詞處理等。一般地,一個索引文件下能存儲不同映像(Mapping)的類型文件(Types)。Mapping 也可通過語句刪除,此時對應(yīng)的類型文件下所有數(shù)據(jù)也會被刪除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容