Elasticsearch基本概念

索引

  • 索引是文檔的容器,是一類文檔的集合

    1. index 體現(xiàn)了邏輯空間的概念: 每個索引都有自己的Mapping定義蜘拉,用于定義包含的文檔的字段名和字段類型。
    2. Shard 體現(xiàn)了物理空間的概念:索引中的數(shù)據(jù)分散在Shard上谎脯。
  • 索引這個詞在 ElasticSearch 會有三種意思:

    1. 索引(名詞)
      類比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫領(lǐng)域來說持寄,索引相當(dāng)于SQL中的一個數(shù)據(jù)庫(Database)娱俺。索引由其名稱(必須為全小寫字符)進行標識废麻。
    2. 索引(動詞)
      保存一個文檔到索引(名詞)的過程脑溢。這非常類似于SQL語句中的 INSERT關(guān)鍵詞屑彻。如果該文檔已存在時那就相當(dāng)于數(shù)據(jù)庫的UPDATE顶吮。
    3. 倒排索引
      關(guān)系型數(shù)據(jù)庫通過增加一個B+樹索引到指定的列上悴了,以便提升數(shù)據(jù)檢索速度湃交。索引ElasticSearch 使用了一個叫做 倒排索引 的結(jié)構(gòu)來達到相同的目的搞莺。
  • 與關(guān)系型數(shù)據(jù)庫的類比



Type

Type 可以理解成關(guān)系數(shù)據(jù)庫中Table。
之前的版本中迈喉,索引和文檔中間還有個類型的概念温圆,每個索引下可以建立多個類型岁歉,文檔存儲時需要指定index和type。從6.0.0開始單個索引中只能有一個類型澈圈,7.0.0以后將將不建議使用帆啃,8.0.0 以后完全不支持瞬女。

棄用該概念的原因:
  1. 我們雖然可以通俗的去理解Index比作 SQL 的 Database努潘,Type比作SQL的Table诽偷。但這并不準確坤学,因為如果在SQL中,Table 之前相互獨立报慕,同名的字段在兩個表中毫無關(guān)系深浮。但是在ES中眠冈,同一個Index 下不同的 Type 如果有同名的字段飞苇,他們會被 Luecence 當(dāng)作同一個字段 ,并且他們的定義必須相同蜗顽。所以我覺得Index現(xiàn)在更像一個表布卡,而Type字段并沒有多少意義雇盖。
  2. 目前Type已經(jīng)被Deprecated崔挖,在7.0開始贸街,一個索引只能建一個Type為_doc

文檔(Document)

  • Index 里面單條的記錄稱為Document(文檔)脓鹃。等同于關(guān)系型數(shù)據(jù)庫表中的行
  • Elasticsearch 是面向文檔的冷溶,文檔是所有可搜索數(shù)據(jù)的最小單位尊浓。
    1. 一部電影的具體信息/一張唱片的詳細信息
  • 文檔會被序列化JSON格式逞频,保存在Elasticsearch中
    1. JSON對象由字段組成
    2. 每個字段都有對應(yīng)的字段類型 (字符串/數(shù)值/布爾/日期/二進制/范圍類型)
  • 每個文檔都有一個Unique ID
    1. 你可以自己指定ID
    2. 或者通過Elasticsearch自動生成
  • 文檔的源數(shù)據(jù)


#源數(shù)據(jù)用于標注文檔的相關(guān)信息
#_index 文檔所屬的索引名
#_type 文檔所屬的類別名
#_id 文檔的唯一id
#_source 文檔的原始Json數(shù)據(jù)
#_version 文檔的版本信息
#_seq_no 嚴格遞增的順序號,每個文檔一個栋齿,Shard級別嚴格遞增苗胀,保證后寫入的Doc的_seq_no大于先寫入的Doc的_seq_no
#primary_term primary_term也和_seq_no一樣是一個整數(shù),每當(dāng)Primary Shard發(fā)生重新分配時瓦堵,比如重啟基协,Primary選舉等,_primary_term會遞增1
#found 查詢的ID正確那么ture, 如果 Id 不正確菇用,就查不到數(shù)據(jù)澜驮,found字段就是false。

節(jié)點

  • 節(jié)點是一個Elasticsearch的實例
    1. 本質(zhì)上就是一個JAVA進程惋鸥。
    2. 一臺機器可以運行多個Elasticsearch進程杂穷,但是生產(chǎn)環(huán)境一般建議還是一臺機器運行一個Elasticsearch實例悍缠。
  • 每個節(jié)點都有名字,通過配置文件配置耐量,或者啟動的時候 -E node.name=node1 指定
  • 每個節(jié)點在啟動之后飞蚓,會分配一個UID,保存在data目錄下
Master-eligible 節(jié)點 和 Master 節(jié)點
  • 每個節(jié)點啟動后廊蜒,默認就是一個Master eligible 節(jié)點
  • Master-eligible節(jié)點可以參加選主流程趴拧,成為Master節(jié)點
  • 當(dāng)?shù)谝粋€節(jié)點啟動的時候,它會將自己選舉成Master節(jié)點
  • 每個節(jié)點上都保存了集群的狀態(tài)山叮,但是只有Master節(jié)點才能修改集群的狀態(tài)信息
    1. 集群狀態(tài)(Cluster State)八堡,維護了一個集群中,必要的信息所有的節(jié)點信息聘芜、所有的索引和其相關(guān)的Mapping 與 Setting 信息分篇的路由信息缝龄。
Data 節(jié)點 和 Coordinating 節(jié)點
  • Data 節(jié)點
    1. 可以保存數(shù)據(jù)的節(jié)點汰现,叫做Data Node。負責(zé)保存分片數(shù)據(jù)叔壤,在數(shù)據(jù)擴展上起到了至關(guān)重要的作用瞎饲。
  • Coordinating 節(jié)點
    1. 負責(zé)接受Client的請求,將請求分發(fā)到合適的節(jié)點炼绘,最終把結(jié)果匯聚到一起嗅战。
    2. 每個節(jié)點默認都起到了Coordinating Node 的職責(zé)。
其他節(jié)點
  • Hot & Warm 節(jié)點
    1. 不同硬件配置的Data Node俺亮,用來實現(xiàn)Hot & Warm 結(jié)構(gòu)驮捍,降低集群部署的成本。
  • Machine Learning Node
    1. 負責(zé)跑機器學(xué)習(xí)的Job脚曾。

分片

  • 主分片东且,用以解決數(shù)據(jù)水平擴展的問題,通過主分片本讥,可以將數(shù)據(jù)分布到集群的所有節(jié)點之上
    1. 一個分片是一個運行的Lucene的實例珊泳。
    2. 主分片在索引創(chuàng)建時指定,后續(xù)不允許修改拷沸,除非Reindex色查。
  • 副本,用以解決數(shù)據(jù)高可用的問題撞芍,副本分片是主分片的拷貝
    1. 副本分片數(shù)秧了,可以動態(tài)調(diào)整。
    2. 增加副本數(shù)序无,還可以在一定程度上提高服務(wù)可用性(讀取的吞吐)示惊。
  • 分片的設(shè)定
  1. 分片數(shù)設(shè)置過小
    導(dǎo)致后續(xù)無法增加節(jié)點進行水平擴展好港。
    導(dǎo)致分片的數(shù)據(jù)量太大,數(shù)據(jù)在重新分配時耗時米罚。
  2. 分片數(shù)設(shè)置過大
    影響搜索結(jié)果的相關(guān)性打分钧汹,影響統(tǒng)計結(jié)果的準確性。
    單個節(jié)點上過多的分片录择,會導(dǎo)致資源浪費拔莱,同時也會影響性能。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隘竭,一起剝皮案震驚了整個濱河市塘秦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌动看,老刑警劉巖尊剔,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異菱皆,居然都是意外死亡须误,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門仇轻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來京痢,“玉大人,你說我怎么就攤上這事篷店〖酪” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵疲陕,是天一觀的道長方淤。 經(jīng)常有香客問我,道長蹄殃,這世上最難降的妖魔是什么臣淤? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮窃爷,結(jié)果婚禮上邑蒋,老公的妹妹穿的比我還像新娘。我一直安慰自己按厘,他們只是感情好医吊,可當(dāng)我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逮京,像睡著了一般卿堂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天草描,我揣著相機與錄音览绿,去河邊找鬼。 笑死穗慕,一個胖子當(dāng)著我的面吹牛饿敲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逛绵,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怀各,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了术浪?” 一聲冷哼從身側(cè)響起瓢对,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胰苏,沒想到半個月后硕蛹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡硕并,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年法焰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲤孵。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辰如,靈堂內(nèi)的尸體忽然破棺而出普监,到底是詐尸還是另有隱情,我是刑警寧澤琉兜,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布凯正,位于F島的核電站,受9級特大地震影響豌蟋,放射性物質(zhì)發(fā)生泄漏廊散。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一梧疲、第九天 我趴在偏房一處隱蔽的房頂上張望允睹。 院中可真熱鬧,春花似錦幌氮、人聲如沸缭受。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽米者。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔓搞,已是汗流浹背胰丁。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留喂分,地道東北人锦庸。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像妻顶,于是被迫代替她去往敵國和親酸员。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,781評論 2 354