Elasticsearch基本概念

  • Elasticsearch自頂向下的架構體系

􏱍􏴖􏰬􏳤􏴗node

 

 

  • 􏱍􏴖􏰬􏳤􏴗文檔,索引

  

文檔(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,使用它與集羣進行交互app

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

􏱍􏴖􏰬􏳤􏴗機器學習

相關文章
相關標籤/搜索