色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

jf_ro2CN3Fa ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-12-19 11:26 ? 次閱讀

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

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

不管你用沒用過 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 分片?!?/strong>

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

ES 集群部署在 3個 機器上(esnode1、esnode2、esnode3):

「創建個索引,分片為 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:客戶端收到成功響應時,意味著寫操作已經在主分片和所有副分片都執行完成?!?/strong>

寫數據底層原理

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

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

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

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

    ?

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

    ?

  • 1s 時間:ES 是近實時搜索,即數據寫入 1s后可以搜索到?!?/strong>
  • 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

    文章

    7133

    瀏覽量

    89366
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14368

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

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

收藏 人收藏

    評論

    相關推薦

    如何在Linux環境下高效安裝部署和配置Elasticsearch

    /CentOS-7-x86_64-DVD-2009.iso elasticsearch-7.10.0-linux-x86_64.tar.gz https://www.elastic.co/cn/downloads/past-releases
    的頭像 發表于 01-16 11:49 ?188次閱讀

    在華為云上通過 Docker 容器部署 Elasticsearch 并進行性能評測

    ? 2.2 安裝 Docker ? 2.3 啟動 Docker ? 3. 使用Docker部署Elasticsearch ? 3.1 拉取Elasticsearch鏡像 ? 3.2 啟動
    的頭像 發表于 01-13 13:36 ?85次閱讀
    在華為云上通過 Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并進行性能評測

    搞懂汽車電控IGBT模塊

    想要從零了解汽車電控IGBT模塊看這篇就夠了!根據乘聯會數據,2022年6月新能源車國內零售滲透率27.4%,并且2022年6月29日歐盟對外宣布,歐盟27個成員國已經初步達成致,歐洲將于
    的頭像 發表于 01-07 17:08 ?593次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b>汽車電控IGBT模塊

    構建高效搜索解決方案,Elasticsearch &amp; Kibana 的完美結合

    前言 構建高效搜索解決方案,FlexusX 服務器與 Elasticsearch & Kibana 的完美結合,為企業帶來云端搜索新體驗。FlexusX 實例以其卓越性能與靈活擴展性,確保高并發搜索
    的頭像 發表于 12-27 13:48 ?108次閱讀
    構建高效搜索解決方案,<b class='flag-5'>Elasticsearch</b> &amp; Kibana 的完美結合

    Elasticsearch 再次開源

    Elasticsearch 和 Kibana 又可以被稱為開源了。很難表達這句話讓我有多高興。我激動得簡直要跳起來了。我們 Elastic 的所有人都是如此。開源是我的 DNA。這也是Elastic的DNA。能夠再次將 Elasticsearch 稱為開源,我感到非常高興
    的頭像 發表于 11-13 12:14 ?171次閱讀
    <b class='flag-5'>Elasticsearch</b> 再次開源

    名單公布!【書籍評測活動NO.50】親歷芯片產線,輕松圖解芯片制造,揭秘芯片工廠的秘密

    大佬聯系工作人員(微信:elecfans123)領取書籍進行評測,如在5個工作日內未聯系,視為放棄本次試用評測資格! 大話芯片制造,輕松解讀芯片科普 與眾不同的清新、亮眼綠色封面,讓IC從業者眼前
    發表于 11-04 15:38

    搞懂Linux進程的睡眠和喚醒

    、常見的進程狀態與理解 在操作系統內部,有專門用來管理進程的結構體,叫做struct task_struct,也稱作進程控制塊(PCB),主要包含描述進程的相關信息,如進程用戶、進程狀態、進程
    發表于 11-04 15:15

    搞懂用ZPC輕松拿捏數據上云

    ZPC是ZLG全新研發的顯控體機。開源AWTK,版權無憂!AWFlow流圖編程,開發很簡單!多種通信協議,設備互聯超便捷!更有ZWS,數據上云很輕松!本文將介紹ZPC輕松拿捏數據上云。ZPC簡介
    的頭像 發表于 09-05 08:05 ?393次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b>用ZPC<b class='flag-5'>輕松</b>拿捏數據上云

    日志數據流圖

    日志數據流圖 日志系統數據流圖 系統進行日志收集的過程可以分為三個環節: (1)日志收集和導入ElasticSearch (2)ElasticSearch進行索引等處理 (3)可視化操作,查詢等
    的頭像 發表于 08-21 15:00 ?331次閱讀
    統<b class='flag-5'>一</b>日志數據流圖

    PCB阻抗設計12問,輕松帶你搞懂阻抗!

    阻抗,工程師們都接觸過,但能把阻抗說清楚的工程師少之又少。阻抗看似簡單,實則難以言表。 下面我們用快問快答的方式,輕松幫你搞懂阻抗! 01 問:什么是阻抗? 答:在有電阻、電感和電容的電路里
    發表于 06-11 10:21

    Flex-Algo輕松掌握!搞懂必看!

    01為什么需要Flex-Algo傳統IGP(InteriorGatewayProtocol,內部網關協議)基于鏈路的開銷值來計算到達目的地的最優路徑。在鏈路開銷值不能作為路徑優劣的唯標準時,傳統
    的頭像 發表于 05-16 08:04 ?264次閱讀
    Flex-Algo<b class='flag-5'>輕松</b>掌握!<b class='flag-5'>搞懂</b>必看!

    搞懂DDR內存原理

    內存(DRAM-RandomAccessMemory)作為當代數字系統最主要的核心部件之,從各種終端設備到核心層數據處理和存儲設備,從各種消費類電子設備到社會各行業專用設備,是各種級別的CPU進行
    的頭像 發表于 05-09 17:09 ?3916次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>搞懂</b>DDR內存原理

    音箱制作過程圖解

    電子發燒友網站提供《音箱制作過程圖解.doc》資料免費下載
    發表于 04-28 09:27 ?11次下載

    Rust編寫的首個Postgres基礎Elasticsearch開源替代品問世

    ,Firebase 開源替代 Supabase,AirTable 開源替代 NocoDB,等等等等,現在又多了 ElasticSearch 開源替代 —— ParadeDB。
    的頭像 發表于 02-22 11:34 ?918次閱讀
    Rust編寫的首個Postgres基礎<b class='flag-5'>Elasticsearch</b>開源替代品問世

    言APP上線數字分身功能

    言APP近日上線了項令人興奮的新功能——數字分身。這功能允許用戶輕松創建自己的個性化虛擬形象,為用戶帶來全新的互動體驗。
    的頭像 發表于 02-04 10:32 ?1241次閱讀
    主站蜘蛛池模板: 美女扒开腿让男生桶免费看动态图| 小小水蜜桃免费影院| 成人人猿泰山| 果冻传媒在线播放 免费观看| 久青草国产在线视频亚瑟影视| 千禧金瓶梅 快播| 一本大道手机在线看| 国产 日韩 欧美 综合 激情| 麻豆AV无码精品一区二区| 亚洲 欧美 国产在线视频| 99久久久久亚洲AV无码| 寂寞夜晚视频在线观看| 天美传媒在线观看免费完整版| 99国内偷揿国产精品人妻| 久99久热只有精品国产99| 乌克兰成人性色生活片| 宝贝你骚死哥了好爽| 麻豆成人啪啪色婷婷久久| 亚洲免费在线播放| 国产精品美女久久久网站动漫| 欧美乱码卡一卡二卡四卡免费| 伊人久久大香线蕉无码麻豆| 国产精品无码无卡毛片不卡视| 日本漫画大全无翼乌| 99热这里只有 精品| 久久久久婷婷国产综合青草| 亚洲 天堂 国产在线播放 | 久久大香线蕉综合爱| 无人区日本电影在线观看高清| 成人国内精品久久久久影| 内射人妻无码色AV麻豆去百度搜| 一个人高清在线观看日本免费| 国产无遮挡色视频免费观看性色| 手机看片国产免费久久网| 叮当成人社区| 色中色最新地址登陆| 国产av在在免费线观看美女| 日韩精品一区二区中文| 大香伊人中文字幕精品| 色-情-伦-理一区二区三区| 成人免费在线视频|