91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一文輕松圖解搞懂Elasticsearch原理!

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 作者:芋道源碼 ? 2022-12-19 11:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • 認(rèn)識(shí)倒排索引
  • 分布式架構(gòu)原理
  • 寫入數(shù)據(jù)的工作原理
  • 寫數(shù)據(jù)底層原理
  • 讀取數(shù)據(jù)的工作原理
  • 搜索工作原理
  • 刪除/更新數(shù)據(jù)底層原理

ES 的集群模式和 kafka 很像,kafka 又和 redis 的集群模式很像??傊褪窍嗷ソ梃b!

不管你用沒(méi)用過(guò) ES,今天我們一起聊聊它。就當(dāng)擴(kuò)展大家的知識(shí)廣度了!

ac599d8c-7f43-11ed-8abf-dac502259ad0.jpg

認(rèn)識(shí)倒排索引

「正排索引 VS 倒排索引:」

ac706026-7f43-11ed-8abf-dac502259ad0.jpg正排索引 VS 倒排索引

「倒排索引包括兩個(gè)部分:」

  • 單詞詞典(Term Dictionary):記錄所有文檔的單詞,記錄單詞到倒排列表的關(guān)聯(lián)關(guān)系

    ?

    單詞詞典一般比較大,可以通過(guò) B+ 樹 或 哈希拉鏈法實(shí)現(xiàn),以滿足高性能的插入與查詢

    ?

  • 倒排列表(Posting List):記錄了單詞對(duì)應(yīng)的文檔結(jié)合,由倒排索引項(xiàng)(Posting)組成:

    • 文檔 ID
  • 詞頻 TF:該單詞在文檔中出現(xiàn)的次數(shù),用于相關(guān)性評(píng)分

  • 位置(Position):?jiǎn)卧~在文檔中分詞的位置。用于語(yǔ)句搜索(Phrase Query

  • 偏移(Offset):記錄單詞的開始結(jié)束位置,實(shí)現(xiàn)高亮顯示

ac7faee6-7f43-11ed-8abf-dac502259ad0.jpg倒排索引

ElasticSearch 的倒排索引:」

  • ElasticSearchJSON 文檔中的每個(gè)字段,都有自己的倒排索引

  • 可以針對(duì)某些字段不做索引

    • 優(yōu)點(diǎn):節(jié)省存儲(chǔ)空間
    • 缺點(diǎn):字段無(wú)法被搜索

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

分布式架構(gòu)原理

「分片 shard:一個(gè)索引可以拆分成多個(gè) shard 分片。」

  • 主分片 primary shard:每個(gè)分片都有一個(gè)主分片。
  • 備份分片 replica shard:主分片寫入數(shù)據(jù)后,會(huì)將數(shù)據(jù)同步給其他備份分片。

ES 集群部署在 3個(gè) 機(jī)器上(esnode1esnode2、esnode3):

「創(chuàng)建個(gè)索引,分片為 3 個(gè),副本數(shù)設(shè)置為 1:」

PUT/sku_index/_settings
{
"settings":{
"number_of_shards":3,
"number_of_replicas":1
}
}

響應(yīng):
{
"acknowledged":true
}
ac97105e-7f43-11ed-8abf-dac502259ad0.jpg分布式架構(gòu)原理

ES 集群中有多個(gè)節(jié)點(diǎn),會(huì)自動(dòng)選舉一個(gè)節(jié)點(diǎn)為 master 節(jié)點(diǎn),如上圖的 esnode2節(jié)點(diǎn):」

  • 主節(jié)點(diǎn)(master):管理工作,維護(hù)索引元數(shù)據(jù)、負(fù)責(zé)切換主分片和備份分片身份等。
  • 從節(jié)點(diǎn)(node):數(shù)據(jù)存儲(chǔ)。

「集群中某節(jié)點(diǎn)宕機(jī):」

  • 主節(jié)點(diǎn)宕機(jī):會(huì)重新選舉一個(gè)節(jié)點(diǎn)為 主節(jié)點(diǎn)。
  • 從節(jié)點(diǎn)宕機(jī):由 主節(jié)點(diǎn),將宕機(jī)節(jié)點(diǎn)上的 主分片身份轉(zhuǎn)移到其他機(jī)器上的 備份分片上。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

寫入數(shù)據(jù)的工作原理

「寫單個(gè)文檔所需的步驟:」

  1. 客戶端選擇一個(gè) Node 發(fā)送請(qǐng)求,那么這個(gè) Node 就稱為 「協(xié)調(diào)節(jié)點(diǎn)(Coorinating Node)」 。

  2. Node 使用文檔 ID 來(lái)確定文檔屬于分片 0,通過(guò)集群狀態(tài)中的內(nèi)容路由表信息獲知分片0 的主分片在 Node1 上,因此將請(qǐng)求轉(zhuǎn)發(fā)到 Node1 上。

  3. Node1 上的主分片執(zhí)行寫操作。如果寫入成功,則將請(qǐng)求并行轉(zhuǎn)發(fā)到 Node3 的副分片上,等待返回結(jié)果。

    當(dāng)所有的副分片都報(bào)告成功,Node1 將向 Node (協(xié)調(diào)節(jié)點(diǎn))報(bào)告成功。

acac3790-7f43-11ed-8abf-dac502259ad0.jpg寫入數(shù)據(jù)的工作原理

Tips:客戶端收到成功響應(yīng)時(shí),意味著寫操作已經(jīng)在主分片和所有副分片都執(zhí)行完成。」

寫數(shù)據(jù)底層原理

ac599d8c-7f43-11ed-8abf-dac502259ad0.jpg寫數(shù)據(jù)底層原理

「寫操作可分為 3 個(gè)主要操作:」

  1. 寫入新文檔: 這時(shí)候搜索,是搜索不到。

  • 將數(shù)據(jù)寫入內(nèi)存
  • 將這操作寫入 translog 文件中
  1. refresh 操作: 默認(rèn)每隔 1s ,將內(nèi)存中的文檔寫入文件系統(tǒng)緩存(filesystem cache)構(gòu)成一個(gè) segment

    ?

    這時(shí)候搜索,可以搜索到數(shù)據(jù)。

    ?

  • 1s 時(shí)間:ES 是近實(shí)時(shí)搜索,即數(shù)據(jù)寫入 1s后可以搜索到。」
  • flush 操作: 默認(rèn)每隔 30 分鐘 或者 translog 文件 512MB ,將文件系統(tǒng)緩存中的 segment 寫入磁盤,并將 translog 刪除。

translog 文件:」 來(lái)記錄兩次 flush(fsync) 之間所有的操作,當(dāng)機(jī)器從故障中恢復(fù)或者重啟,可以根據(jù)此還原

  • translog 是文件,存在于內(nèi)存中,如果掉電一樣會(huì)丟失。
  • 「默認(rèn)每隔 5s 刷一次到磁盤中」

讀取數(shù)據(jù)的工作原理

「讀取文檔所需的步驟:」

  1. 客戶端選擇一個(gè) Node 發(fā)送請(qǐng)求,那么這個(gè) Node 就稱為 「協(xié)調(diào)節(jié)點(diǎn)(Coorinating Node)」
  2. Node 使用文檔 ID 來(lái)確定文檔屬于分片 0,通過(guò)集群狀態(tài)中的內(nèi)容路由表信息獲知分片0 有 2 個(gè)副本數(shù)據(jù)(一主一副),會(huì)使用隨機(jī)輪詢算法選擇出一個(gè)分片,這里將請(qǐng)求轉(zhuǎn)發(fā)到 Node1
  3. Node1 將文檔返回給 Node,Node 將文檔返回給客戶端。
ad016b34-7f43-11ed-8abf-dac502259ad0.jpg讀取數(shù)據(jù)的工作原理

「在讀取時(shí),文檔可能已經(jīng)存在于主分片上,但還沒(méi)有復(fù)制到副分片,這種情況下:」

  • 讀請(qǐng)求命中副分片時(shí),可能會(huì)報(bào)告文檔不存在。
  • 讀請(qǐng)求命中主分片時(shí),可能成功返回文檔。

搜索工作原理

「搜索數(shù)據(jù)過(guò)程:」

  1. 客戶端選擇一個(gè) Node 發(fā)送請(qǐng)求,那么這個(gè) Node 就稱為 「協(xié)調(diào)節(jié)點(diǎn)(Coorinating Node)」
  2. Node 協(xié)調(diào)節(jié)點(diǎn)將搜索請(qǐng)求轉(zhuǎn)發(fā)到所有的 分片(shard):主分片 或 副分片,都可以。
  3. query 階段」 :每個(gè)分片 shard 將自己的搜索結(jié)果(文檔 ID)返回給協(xié)調(diào)節(jié)點(diǎn),由協(xié)調(diào)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的合并、排序、分頁(yè)等操作,產(chǎn)出最終結(jié)果。
  4. fetch 階段」 :由協(xié)調(diào)節(jié)點(diǎn)根據(jù) 文檔 ID 去各個(gè)節(jié)點(diǎn)上拉取實(shí)際的文檔數(shù)據(jù)。
ad107872-7f43-11ed-8abf-dac502259ad0.jpg搜索工作原理

舉個(gè)栗子: 有 3 個(gè)分片,查詢返回前 10 個(gè)匹配度最高的文檔

  1. 每個(gè)分片都查詢出當(dāng)前分片的 TOP 10 數(shù)據(jù)
  2. 「協(xié)調(diào)節(jié)點(diǎn)」3 * 10 = 30 的結(jié)果再次排序,返回最終 TOP 10 的結(jié)果。

刪除/更新數(shù)據(jù)底層原理

  • 「刪除操作」commit 的時(shí)候會(huì)生成一個(gè) .del 文件,里面將某個(gè) doc 標(biāo)識(shí)為 deleted 狀態(tài),那么搜索的時(shí)候根據(jù) .del 文件就知道這個(gè) doc 是否被刪除了。
  • 「更新操作」 :就是將原來(lái)的 doc 標(biāo)識(shí)為 deleted 狀態(tài),然后新寫入一條數(shù)據(jù)。

「底層邏輯是:」

  • Index Buffer 每次 refresh 操作,就會(huì)產(chǎn)生一個(gè) segment file。(默認(rèn)情況:1秒1次)
  • 定制執(zhí)行 merge 操作:將多個(gè) segment file 合并成一個(gè),同時(shí)將標(biāo)識(shí)為 deleteddoc 「物理刪除」 ,將新的 segment file 寫入磁盤,最后打上 commit point 標(biāo)識(shí)所有新的 segment file。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7335

    瀏覽量

    94801
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

    15940

原文標(biāo)題:一文輕松圖解搞懂Elasticsearch原理!

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是超高頻rfid讀寫器?讀懂其原理、優(yōu)勢(shì)及應(yīng)用場(chǎng)景

    標(biāo)簽群讀等核心優(yōu)勢(shì),同時(shí)簡(jiǎn)要介紹其主流應(yīng)用場(chǎng)景,幫你快速入門RFID讀寫器相關(guān)知識(shí),輕松搞懂它的核心價(jià)值。
    的頭像 發(fā)表于 02-06 14:39 ?621次閱讀
    什么是超高頻rfid讀寫器?<b class='flag-5'>一</b><b class='flag-5'>文</b>讀懂其原理、優(yōu)勢(shì)及應(yīng)用場(chǎng)景

    帶你徹底搞懂K8s網(wǎng)絡(luò)

    說(shuō)實(shí)話,K8s 網(wǎng)絡(luò)是我見過(guò)最讓新手頭疼的知識(shí)點(diǎn),沒(méi)有之。記得我剛接觸 K8s 那會(huì)兒,看著流量在 Pod、Service、Node 之間穿梭,完全是臉懵逼。后來(lái)踩了無(wú)數(shù)坑,熬了無(wú)數(shù)夜,總算把這套網(wǎng)絡(luò)模型摸透了。今天這篇文章,我會(huì)用最接地氣的方式,帶你徹底
    的頭像 發(fā)表于 02-06 10:15 ?472次閱讀

    搞懂Linux權(quán)限體系

    在聊具體技術(shù)之前,我想先說(shuō)說(shuō)為什么我們需要認(rèn)真對(duì)待權(quán)限管理。
    的頭像 發(fā)表于 02-03 11:06 ?499次閱讀

    徹底搞懂ADC精度問(wèn)題

    各位工程師朋友們,你是否曾遇到這樣的困擾:精心設(shè)計(jì)的采集系統(tǒng),ADC測(cè)量精度卻總是不達(dá)標(biāo)?明明選擇了高分辨率ADC,實(shí)測(cè)結(jié)果還是差強(qiáng)人意?
    的頭像 發(fā)表于 01-30 09:20 ?5991次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>徹底<b class='flag-5'>搞懂</b>ADC精度問(wèn)題

    從0到1搭建實(shí)時(shí)日志監(jiān)控系統(tǒng):基于WebSocket + Elasticsearch的實(shí)戰(zhàn)方案

    1. 背景與痛點(diǎn) 在開發(fā)分布式系統(tǒng)時(shí),日志分散在多個(gè)服務(wù)節(jié)點(diǎn)中,傳統(tǒng)輪詢查詢方式存在延遲高、資源浪費(fèi)的問(wèn)題。某次線上故障中,因未能實(shí)時(shí)發(fā)現(xiàn)錯(cuò)誤日志,導(dǎo)致問(wèn)題排查時(shí)間延長(zhǎng)2小時(shí)。因此,決定自研
    發(fā)表于 01-09 16:43

    紅外鏡頭是什么?篇文章讓你輕松搞懂

    紅外鏡頭是熱像儀不可或缺的光學(xué)系統(tǒng)部件,它通過(guò)捕捉物體發(fā)出的紅外輻射并匯聚到紅外探測(cè)器上,紅外探測(cè)器將紅外線進(jìn)行光電轉(zhuǎn)換,再經(jīng)過(guò)圖像處理,最終就形成了紅外熱圖像。紅外鏡頭的優(yōu)劣直接影響了紅外熱圖像的質(zhì)量,我們可以從以下幾個(gè)方面來(lái)了解紅外鏡頭。
    的頭像 發(fā)表于 12-23 09:54 ?469次閱讀
    紅外鏡頭是什么?<b class='flag-5'>一</b>篇文章讓你<b class='flag-5'>輕松</b><b class='flag-5'>搞懂</b>它

    Jtti.ccVPS和IP的關(guān)系是什么?講清服務(wù)器背后的網(wǎng)絡(luò)邏輯

    最基礎(chǔ)的網(wǎng)絡(luò)邏輯說(shuō)起,帶你把 VPS 和 IP 的關(guān)系捋清楚,看完你也能輕松搞懂。 、VPS和IP是什么關(guān)系? 簡(jiǎn)單來(lái)說(shuō),VPS是房子,IP是門牌號(hào)。 每臺(tái) VPS(虛擬專用服務(wù)器)都是通過(guò)虛擬技術(shù)從
    的頭像 發(fā)表于 07-07 17:41 ?875次閱讀

    圖解單片機(jī)功能與應(yīng)用(完整版)

    從基礎(chǔ)知識(shí)的介紹出發(fā),圖文并茂,直觀、系統(tǒng)地介紹了單片機(jī)的內(nèi)部結(jié)構(gòu)、工作原理和應(yīng)用技巧。全書分為10章,內(nèi)容包括51單片機(jī)編程資源圖解、51單片機(jī)指令系統(tǒng)圖解、匯編語(yǔ)言程序設(shè)計(jì)圖解、輸入/輸出
    發(fā)表于 06-16 16:52

    單節(jié)點(diǎn)Elasticsearch+Filebeat+Kibana安裝指南

    單節(jié)點(diǎn)Elasticsearch+Filebeat+Kibana安裝指南
    的頭像 發(fā)表于 05-21 11:06 ?1233次閱讀
    單節(jié)點(diǎn)<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安裝指南

    升壓電路搞懂 升壓電路技術(shù)文檔合集

    升壓電路圖集合,升壓電路設(shè)計(jì)方案,電路設(shè)計(jì)技巧,升壓電路搞懂;給大家分享 升壓電路技術(shù)文檔合集
    的頭像 發(fā)表于 05-15 15:58 ?2.4w次閱讀
    升壓電路<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b> 升壓電路技術(shù)文檔合集

    漫畫圖解 電感器 抗干擾元器件指南(全彩PDF版)

    漫畫圖解電感基礎(chǔ)知識(shí)(高清PDF) 內(nèi)容:很形象的漫畫和語(yǔ)言圖解關(guān)于電感器的入門基礎(chǔ)知識(shí),讓電子初學(xué)者也能輕松的看懂電子電路。 純分享貼,有需要可以直接下載附件獲取完整資料! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持
    發(fā)表于 05-13 15:49

    PCB封裝圖解

    PCB封裝圖解——詳細(xì)介紹了各種封裝的具體參數(shù),并介紹了如何進(jìn)行封裝制作 純分享貼,有需要可以直接下載附件獲取文檔! (如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持下哦~)
    發(fā)表于 04-22 13:44

    搞懂波峰焊工藝及缺陷預(yù)防

    波峰焊接是種復(fù)雜的工藝過(guò)程,涉及到金屬表面、熔融焊料、空氣等多種因素。焊接質(zhì)量受到多種因素的影響,如印制板、元器件、焊料、焊劑、焊接溫度、時(shí)間等工藝參數(shù)以及設(shè)備條件等。 因此,要獲得個(gè)優(yōu)良的焊接
    的頭像 發(fā)表于 04-09 14:46 ?3757次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b>波峰焊工藝及缺陷預(yù)防

    搞懂波峰焊工藝及缺陷預(yù)防

    波峰焊接是種復(fù)雜的工藝過(guò)程,涉及到金屬表面、熔融焊料、空氣等多種因素。焊接質(zhì)量受到多種因素的影響,如印制板、元器件、焊料、焊劑、焊接溫度、時(shí)間等工藝參數(shù)以及設(shè)備條件等。 因此,要獲得個(gè)優(yōu)良的焊接
    發(fā)表于 04-09 14:44

    無(wú)刷電機(jī)的繞制和接線方法及實(shí)物圖解

    下方附件可打開*附件:無(wú)刷電機(jī)的繞制和接線方法及實(shí)物圖解.doc
    發(fā)表于 03-17 20:00