Elasticsearch基本概念


  • Elasticsearch自頂向下的架構體系

 

 

  • 文檔,索引

  

文檔(Document)
    • Elasticsearch是面向文檔的,文檔是所有可搜索數據的最小單位
    • 文檔會被序列化成JSON格式,保持在Elasticsearch中􏲍􏱂􏵓􏵔􏵖􏴚􏵐􏴣 􏲯􏵓􏵗􏵘 􏰴 􏰠􏵙 􏰴 􏰙􏵚 􏰴
    • 每一個文檔都有一個UniqueID
文檔的元數據
    • 元數據,用於標注穩定的相關信息
    • _index -文檔所屬的索引名
    • _type -文檔所屬的類型名                                       
    • _source-文檔的原始Json數據
    • _version-文檔的版本信息
    • _score-相關性打分

            索引(Index)

          Index- 索引是文檔的容器,是一類文檔的結合

    • Index體現了邏輯空間的概念:每一個索引都有自己的Mapping定義,用於定義包含的文檔的字段名和字段類型
    • Shard體現了物理空間的概念:索引中的數據分散在Shard上

          索引的Mapping與Settings

    • Mapping定義文檔字段的類型
    • Setting定義不同的數據分布
          Type
    • 在7.0之前,一個index可以設置多個Types
    • 6.0開始,Type已經被Deprecated。7.0開始一個索引只能創建一個Type -"_doc"
  • 集群/節點/分片/副本


  • 分布式系統的可用性與擴展性
    • 高可用
      • 服務可用性-允許有節點停止服務
      • 數據可用性-部分節點丟失,不會丟失數據
    • 可擴展性
      • 存儲的水平擴容 請求量提升/數據的不斷增長(將數據分布到所用節點上)
  •  集群
    • 多台Es服務器的結合的統稱叫ES集群
    • 集群的健康狀態
      • Green-主分片與副本都正常分配
      • Yellow-主分片全部正常分配,有副本分片未能正常分配
      • Red-有主分片未能分配(例如 當服務器的磁盤容量超過85%時,去創建了一個新的索引)
  • 節點
    1. 節點是一個Elasticsearch的實例,本質上就是一個JAVA進程
    2. 每一個節點都有名字,通過配置文件配置,或者啟動時候指定
    3. 每一個節點在啟動之后,會分配一個UID,保存在data目錄下
  • Master-eligible nodes 和Master Node(主節點)
    •  每個節點啟動后,默認就是一個Master eligible節點(可以設置node.master:false禁止)
    • Master-eligible節點可以參加選主流出,成為Master節點
    •  每個節點上都保存了集群的狀態,只有Master節點才能修改集群的狀態信息
      •  集群狀態(cluster state)維護了一個集群中必要的信息所有節點的信息/所有的索引和其相關的Mapping與Setting信息/分片的路由信息
      •    任意節點都能修改信息會導致數據的不一致性 
  • DataNode(數據節點)
    • 可以保存數據的節點。負責保存分片數據。在數據擴展上起到了至關重要的作用
  • Coordination Node(協調節點)
    • 負責接收Client的請求,將請求分發到合適的節點,最終把結果匯集到一起
    • 每個節點默認都起到了Coordination Node的職責 
  • Hot&Warm Node
    • 不同硬件配置的Data Node,用來實現Hot&Warm架構,降低集群部署的成本
  • Machine Learning Node
    • 負責跑機器學習的Job,用來做異常檢測
  • Ingest Node
    • Ingest Node 可以看作是數據前置處理轉換的節點,支持 pipeline管道 設置,可以使用 ingest 對數據進行過濾、轉換等操作,類似於 logstash 中 filter 的作用。
  • Tribe Node
    • 5.3開始使用Cross Cluster Search)TribeNode 連接到不同的Elasticsearch集群,並且支持將這些集群當成一個單獨的集群處理
     節點角色划分及資源使用情況
角色
描述
存儲
內存
計算
網絡
數據節點
存儲和檢索數據
極高
主節點
管理集群狀態
Ingest 節點
轉換輸入數據
機器學習節點
機器學習
極高
極高
協調節點
請求轉發和合並檢索結果
 
  •  分片(Primary Shard & Replica Shard)
    • 將數據切分放在每個分片中,分片又被放到集群中的節點上。
    • 每個分片都是獨立的lucene實例
    • 分片數設置過小
      • 導致后續無法增加節點實現水平擴展
      • 單個分片的數據量太大,導致數據重新分配耗時
    • 分片數設置過大
      • 影響搜索結構的相關性打分,影響統計結果的准確性
      • 單個節點上過多的分片,會導致資源浪費,同時也會影響性能
    • 分片為主分片和備份分片
      • 副本分片數提高了數據冗余量
      • 主分片掛掉以后能夠自動由副本分片升為主分片
      • 備份分片還能夠降低主分片的查詢壓力(會消耗更多的系統性能)
  • REST API 

             Elasticsearch提供了一個非常全面和強大的REST API,使用它與集群進行交互

    1. 檢查群集,節點和索引運行狀況,狀態和統計信息
    2. 管理您的群集,節點和索引數據和元數據
    3. 對索引執行CRUD(創建,讀取,更新和刪除)和搜索操作
    4. 執行高級搜索操作,例如分頁,排序,過濾,腳本編寫,聚合等

      

 

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM