Elasticsearch學習之路(三)_Elasticsearch相關概念

Elasticsearch相關概念

文檔

1. elasticsearch是面向文檔的,文檔是所有可搜索數據的最小單位,例如:
    1. 日志文件中的日志項
    2. 一本電影的具體信息 / 一張唱片的詳細信息
    3. MP3播放器里的一首歌 / 一篇PDF文檔中的具體內容
2. 文檔會被序列化為Json格式,保持在elasticsearch中
    1. Json對象有字段注冊
    2. 每個字段都有對應的字段類型(字符串,數值,布爾,日期,二進制,范圍類型)
3. 每個文檔都有一個 uniqueID
    1. 你可以自己指定ID
    2. 或者通過Elasticsearch自動生成

文檔的元數據

1. 元數據可以認為是每個json數據自帶的原始的字段,用于標注文檔的相關信息,主要有以下幾個元數據:
    1. _indx 文檔所屬的索引名
    2. _type 文檔所屬的類型名
    3. _id 文檔的唯一ID
    4. _source 文檔的原始JSON數據
    5. _version 文檔的版本信息
    6. _score 相關性打分

索引 Index

1. 索引是文檔的容器,是一類文檔結合
    Index體現了邏輯空間的概念:每個索引都有自己的Mapping定義,用于定義包含的文檔的字段名和字段類型
    每個索引的數據分布在Shard上,Shard體現了物理空間的概念
2. 索引的Mapping和Settings
    Mapping定義文檔字段的類型
    settings定義不同的數據分布
索引的不同語義
1. 名詞:一個Elasticsearch集群中,可以創(chuàng)建很多不同的索引
2. 動詞:保存一個文檔到elasticsearch的過程也叫索引(indexing),即es創(chuàng)建一個倒排索引的過程
3. 名詞:一個B樹索引,一個倒排索引

Type

Type是一類索引的組合
1. 在7.0之前,一個Index可以設置很多Types
2. 6.0開始,Type已經被Deprecated。7.0開始,一個索引只能創(chuàng)建一個type,即“_doc”

與傳統(tǒng)關系型數據庫RDMS的對比

1. ES的特點是弱結構化,相關性,高性能全文檢索
2. RDMS 事務性和數據聚合Join
RDMS ES
Table Index(Type)
Row Document
Column Field
Schema Mapping
SQL DSL

REST API

ES提供rest api的接口,以便于各種語言調用
image-20210324143155276

分布式集群

    分布式集群是目前的主流做法,原因也是顯而易見的,分布式系統(tǒng)具有單機系統(tǒng)無法比擬的高可用性和可擴展性

1. 高可用性:
    1. 服務可用性:允許有節(jié)點停止服務
    2. 數據可用性:部分節(jié)點丟失,不會丟失數據
2. 可擴展性:
    1. 可以水平擴展
節(jié)點
1. 節(jié)點是一個ES實例
    1. 本質上就是一個JAVA進程
    2. 一臺機器上可以運行多個ES進程,但是生產環(huán)境一般建議一臺機器只運行一個ES實例
2. 每個節(jié)點都有名字,通過配置文件配置,或者啟動的時候,加上 -E node.name=node1 指定
3. 每個節(jié)點在啟動后,會分配一個UID,保持在data目錄下
Master-eligible nodes 和Master Node
1. 每個節(jié)點啟動后,默認就是一個Master eligible節(jié)點
    1. 可以設置node.master:false禁止
2. Master-eligible節(jié)點可以參加選主流程,成為Master節(jié)點
3. 當第一個節(jié)點啟動的時候,它會將自己選舉為Master節(jié)點
4. 每個節(jié)點上都保存了集群的狀態(tài),只有Master節(jié)點才能修改集群的狀態(tài)信息
    1. 集群狀態(tài)(Cluster State) ,維護了一個集群中,必須的信息
        1. 所有的節(jié)點信息
        2. 所有的索引和棋相關的Mapping和Settings信息
        3. 分片的路有信息
Data Node
    可以保存數據的節(jié)點,叫做Data Node,負責保存分片數據,在數據擴展上起到了至關重要的作用
Coordinating Node
1. 負責接收Client的請求,將請求分發(fā)到合適的節(jié)點,最終把結果匯集到一起
2. 每個節(jié)點默認都起了Coordinationg Node的職責
Hot & Warm Node
    不同硬件配置的Data Node,用來實現Hot & Warm 架構,降低集群部署的成本
Machine Learning Node
    顧名思義,負責跑機器學習的Job,用來做異常檢測
Tribe Node
(5.3開始用Cross Cluster Serach) Tribe Node 連接到不同的ES集群,并且支持將這些集群當做一個單獨的集群處理
配置節(jié)點類型
1. 開發(fā)環(huán)境中一個節(jié)點可以承擔多種角色
2. 生產環(huán)境中,應該設置單一的角色的節(jié)點
節(jié)點類型 配置參數 默認值
master eligible node.master true
data node.data true
ingest node.ingest true
coordinating only 每個節(jié)點默認都是coordinating,設置其它類型全部為false
machine_learing node.ml ture(需要 enable x-pack)
分片
1. 主分片:用以解決數據水平擴展的問題,通過主分片,可以將數據分布到集群內的所有節(jié)點之上
    1. 一個分片是一個運行的Lucene的實例
    2. 主分片數在索引創(chuàng)建時指定,后續(xù)不允許修改,除非Reindex
2. 副本,用以解決數據高可用的問題,分片是主分片的拷貝
    1. 副本分片數,可以動態(tài)調整
    2. 增加副本數,還可以在一定程度上提高服務的可用性(讀取的吞吐)
3. 對于生產環(huán)境中分片的設定,需要提前做好容量規(guī)劃
    1. 分片數設置過小
        1. 導致后續(xù)無法增加節(jié)點,實現水平擴展
        2. 單個分片的數據量太大,導致數據重新分配耗時
    2. 分片數設置過大
        1. 影響搜索結果的相關性打分,影響統(tǒng)計結果的準確性
        2. 單個節(jié)點上過多的分片,會導致資源浪費,同時也會影響性能
查看集群的健康情況
1. Green: 主分片與副本都正常分配
2. Yellow:主分片全部正常分配,有副本分配未能正常分配
3. Red:有主分片未能分配
    1. 例如,當服務器的磁盤容量超過85%時,去創(chuàng)建一個新的索引

更多內容歡迎關注我的個人公眾號“韓哥有話說”,100G人工智能學習資料,大量后端學習資料。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容