国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

  • 認識倒排索引
  • 分布式架構原理
  • 寫入數據的工作原理
  • 寫數據底層原理
  • 讀取數據的工作原理
  • 搜索工作原理
  • 刪除/更新數據底層原理

ES 的集群模式和 kafka 很像,kafka 又和 redis 的集群模式很像。總之就是相互借鑒!

不管你用沒用過 ES,今天我們一起聊聊它。就當擴展大家的知識廣度了!

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

認識倒排索引

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

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

「倒排索引包括兩個部分:」

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

    ?

    單詞詞典一般比較大,可以通過 B+ 樹 或 哈希拉鏈法實現,以滿足高性能的插入與查詢

    ?

  • 倒排列表(Posting List):記錄了單詞對應的文檔結合,由倒排索引項(Posting)組成:

    • 文檔 ID
  • 詞頻 TF:該單詞在文檔中出現的次數,用于相關性評分

  • 位置(Position):單詞在文檔中分詞的位置。用于語句搜索(Phrase Query

  • 偏移(Offset):記錄單詞的開始結束位置,實現高亮顯示

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

ElasticSearch 的倒排索引:」

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

  • 可以針對某些字段不做索引

    • 優點:節省存儲空間
    • 缺點:字段無法被搜索

基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

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

分布式架構原理

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

  • 主分片 primary shard:每個分片都有一個主分片。
  • 備份分片 replica shard:主分片寫入數據后,會將數據同步給其他備份分片。

ES 集群部署在 3個 機器上(esnode1esnode2esnode3):

「創建個索引,分片為 3 個,副本數設置為 1:」

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

響應:
{
"acknowledged":true
}
ac97105e-7f43-11ed-8abf-dac502259ad0.jpg分布式架構原理

ES 集群中有多個節點,會自動選舉一個節點為 master 節點,如上圖的 esnode2節點:」

  • 主節點(master):管理工作,維護索引元數據、負責切換主分片和備份分片身份等。
  • 從節點(node):數據存儲。

「集群中某節點宕機:」

  • 主節點宕機:會重新選舉一個節點為 主節點。
  • 從節點宕機:由 主節點,將宕機節點上的 主分片身份轉移到其他機器上的 備份分片上。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

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

寫入數據的工作原理

「寫單個文檔所需的步驟:」

  1. 客戶端選擇一個 Node 發送請求,那么這個 Node 就稱為 「協調節點(Coorinating Node)」

  2. Node 使用文檔 ID 來確定文檔屬于分片 0,通過集群狀態中的內容路由表信息獲知分片0 的主分片在 Node1 上,因此將請求轉發到 Node1 上。

  3. Node1 上的主分片執行寫操作。如果寫入成功,則將請求并行轉發到 Node3 的副分片上,等待返回結果。

    當所有的副分片都報告成功,Node1 將向 Node (協調節點)報告成功。

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

Tips:客戶端收到成功響應時,意味著寫操作已經在主分片和所有副分片都執行完成。」

寫數據底層原理

ac599d8c-7f43-11ed-8abf-dac502259ad0.jpg寫數據底層原理

「寫操作可分為 3 個主要操作:」

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

  • 將數據寫入內存
  • 將這操作寫入 translog 文件中
  1. refresh 操作: 默認每隔 1s ,將內存中的文檔寫入文件系統緩存(filesystem cache)構成一個 segment

    ?

    這時候搜索,可以搜索到數據。

    ?

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

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

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

讀取數據的工作原理

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

  1. 客戶端選擇一個 Node 發送請求,那么這個 Node 就稱為 「協調節點(Coorinating Node)」
  2. Node 使用文檔 ID 來確定文檔屬于分片 0,通過集群狀態中的內容路由表信息獲知分片0 有 2 個副本數據(一主一副),會使用隨機輪詢算法選擇出一個分片,這里將請求轉發到 Node1
  3. Node1 將文檔返回給 NodeNode 將文檔返回給客戶端。
ad016b34-7f43-11ed-8abf-dac502259ad0.jpg讀取數據的工作原理

「在讀取時,文檔可能已經存在于主分片上,但還沒有復制到副分片,這種情況下:」

  • 讀請求命中副分片時,可能會報告文檔不存在。
  • 讀請求命中主分片時,可能成功返回文檔。

搜索工作原理

「搜索數據過程:」

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

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

  1. 每個分片都查詢出當前分片的 TOP 10 數據
  2. 「協調節點」3 * 10 = 30 的結果再次排序,返回最終 TOP 10 的結果。

刪除/更新數據底層原理

  • 「刪除操作」commit 的時候會生成一個 .del 文件,里面將某個 doc 標識為 deleted 狀態,那么搜索的時候根據 .del 文件就知道這個 doc 是否被刪除了。
  • 「更新操作」 :就是將原來的 doc 標識為 deleted 狀態,然后新寫入一條數據。

「底層邏輯是:」

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


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7335

    瀏覽量

    94755
  • spring
    +關注

    關注

    0

    文章

    341

    瀏覽量

    15935

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

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    什么是超高頻rfid讀寫器?讀懂其原理、優勢及應用場景

    標簽群讀等核心優勢,同時簡要介紹其主流應用場景,幫你快速入門RFID讀寫器相關知識,輕松搞懂它的核心價值。
    的頭像 發表于 02-06 14:39 ?574次閱讀
    什么是超高頻rfid讀寫器?<b class='flag-5'>一</b><b class='flag-5'>文</b>讀懂其原理、優勢及應用場景

    帶你徹底搞懂K8s網絡

    說實話,K8s 網絡是我見過最讓新手頭疼的知識點,沒有之。記得我剛接觸 K8s 那會兒,看著流量在 Pod、Service、Node 之間穿梭,完全是臉懵逼。后來踩了無數坑,熬了無數夜,總算把這套網絡模型摸透了。今天這篇文章,我會用最接地氣的方式,帶你徹底
    的頭像 發表于 02-06 10:15 ?420次閱讀

    搞懂Linux權限體系

    在聊具體技術之前,我想先說說為什么我們需要認真對待權限管理。
    的頭像 發表于 02-03 11:06 ?464次閱讀

    徹底搞懂ADC精度問題

    各位工程師朋友們,你是否曾遇到這樣的困擾:精心設計的采集系統,ADC測量精度卻總是不達標?明明選擇了高分辨率ADC,實測結果還是差強人意?
    的頭像 發表于 01-30 09:20 ?5933次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>徹底<b class='flag-5'>搞懂</b>ADC精度問題

    從0到1搭建實時日志監控系統:基于WebSocket + Elasticsearch的實戰方案

    1. 背景與痛點 在開發分布式系統時,日志分散在多個服務節點中,傳統輪詢查詢方式存在延遲高、資源浪費的問題。某次線上故障中,因未能實時發現錯誤日志,導致問題排查時間延長2小時。因此,決定自研
    發表于 01-09 16:43

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

    紅外鏡頭是熱像儀不可或缺的光學系統部件,它通過捕捉物體發出的紅外輻射并匯聚到紅外探測器上,紅外探測器將紅外線進行光電轉換,再經過圖像處理,最終就形成了紅外熱圖像。紅外鏡頭的優劣直接影響了紅外熱圖像的質量,我們可以從以下幾個方面來了解紅外鏡頭。
    的頭像 發表于 12-23 09:54 ?449次閱讀
    紅外鏡頭是什么?<b class='flag-5'>一</b>篇文章讓你<b class='flag-5'>輕松</b><b class='flag-5'>搞懂</b>它

    Jtti.ccVPS和IP的關系是什么?講清服務器背后的網絡邏輯

    最基礎的網絡邏輯說起,帶你把 VPS 和 IP 的關系捋清楚,看完你也能輕松搞懂、VPS和IP是什么關系? 簡單來說,VPS是房子,IP是門牌號。 每臺 VPS(虛擬專用服務器)都是通過虛擬技術從
    的頭像 發表于 07-07 17:41 ?856次閱讀

    圖解單片機功能與應用(完整版)

    從基礎知識的介紹出發,圖文并茂,直觀、系統地介紹了單片機的內部結構、工作原理和應用技巧。全書分為10章,內容包括51單片機編程資源圖解、51單片機指令系統圖解、匯編語言程序設計圖解、輸入/輸出
    發表于 06-16 16:52

    單節點Elasticsearch+Filebeat+Kibana安裝指南

    單節點Elasticsearch+Filebeat+Kibana安裝指南
    的頭像 發表于 05-21 11:06 ?1187次閱讀
    單節點<b class='flag-5'>Elasticsearch</b>+Filebeat+Kibana安裝指南

    升壓電路搞懂 升壓電路技術文檔合集

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

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

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

    PCB封裝圖解

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

    搞懂波峰焊工藝及缺陷預防

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

    搞懂波峰焊工藝及缺陷預防

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

    無刷電機的繞制和接線方法及實物圖解

    下方附件可打開*附件:無刷電機的繞制和接線方法及實物圖解.doc
    發表于 03-17 20:00