国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch 底層讀寫原理

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch 底層讀寫原理。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

ElasticSearch 底層讀寫原理

? 寫請求是寫入 primary shard,然后同步給所有的 replica shard;讀請求可以從 primary shard 或 replica shard 讀取,采用的是隨機(jī)輪詢算法。

1、ES寫入數(shù)據(jù)的過程

ElasticSearch 底層讀寫原理,ElasticSearch,elasticsearch,數(shù)據(jù)庫

1.選擇任意一個(gè)DataNode發(fā)送請求,例如:node2。此時(shí),node2就成為一個(gè)coordinating node(協(xié)調(diào)節(jié)點(diǎn))

2.計(jì)算得到文檔要寫入的分片 shard = hash(routing) % number_of_primary_shards routing 是一個(gè)可變值,默認(rèn)是文檔的 _id

3.coordinating node會進(jìn)行路由,將請求轉(zhuǎn)發(fā)給對應(yīng)的primary shard所在的DataNode(假設(shè)primary shard在node1、replica shard在node2)

4.node1節(jié)點(diǎn)上的Primary Shard處理請求,寫入數(shù)據(jù)到索引庫中,并將數(shù)據(jù)同步到Replica shard

5.Primary Shard和Replica Shard都保存好了文檔,返回client.

注意:es路由分片規(guī)則是 shard = hash(routing) % number_of_primary_shards,其中number_of_primary_shards為分片數(shù)。

2、ES讀取數(shù)據(jù)的過程

2.1根據(jù)id查詢數(shù)據(jù)的過程

根據(jù) doc id 進(jìn)行 hash,判斷出來當(dāng)時(shí)把 doc id 分配到了哪個(gè) shard 上面去,從那個(gè) shard 去查詢。

  1. 客戶端發(fā)送請求到任意一個(gè) node,成為 coordinate node 。
  2. coordinate node 對 doc id 進(jìn)行哈希路由,將請求轉(zhuǎn)發(fā)到對應(yīng)的 node,此時(shí)會使用 round-robin 隨機(jī)輪詢算法,在 primary shard 以及其所有 replica 中隨機(jī)選擇一個(gè),讓讀請求負(fù)載均衡。
  3. 接收請求的 node 返回 document 給 coordinate node 。
  4. coordinate node 返回 document 給客戶端。

2.2根據(jù)關(guān)鍵詞查詢數(shù)據(jù)的過程

  • 客戶端發(fā)送請求到一個(gè) coordinate node 。
  • 協(xié)調(diào)節(jié)點(diǎn)將搜索請求轉(zhuǎn)發(fā)到所有的 shard 對應(yīng)的 primary shard 或 replica shard ,都可以。
  • query phase:每個(gè) shard 將自己的搜索結(jié)果返回給協(xié)調(diào)節(jié)點(diǎn),由協(xié)調(diào)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)的合并、排序、分頁等操作,產(chǎn)出最終結(jié)果。
  • fetch phase:接著由協(xié)調(diào)節(jié)點(diǎn)根據(jù) doc id 去各個(gè)節(jié)點(diǎn)上拉取實(shí)際的 document 數(shù)據(jù),最終返回給客戶端。

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

核心概念

segment file: 存儲倒排索引的文件,每個(gè)segment本質(zhì)上就是一個(gè)倒排索引,每秒都會生成一個(gè)segment文件,當(dāng)文件過多時(shí)es會自動進(jìn)行segment merge(合并文件),合并時(shí)會同時(shí)將已經(jīng)標(biāo)注刪除的文檔物理刪除。

commit point: 記錄當(dāng)前所有可用的segment,每個(gè)commit point都會維護(hù)一個(gè).del文件,即每個(gè).del文件都有一個(gè)commit point文件(es刪除數(shù)據(jù)本質(zhì)是不屬于物理刪除),當(dāng)es做刪改操作時(shí)首先會在.del文件中聲明某個(gè)document已經(jīng)被刪除,文件內(nèi)記錄了在某個(gè)segment內(nèi)某個(gè)文檔已經(jīng)被刪除,當(dāng)查詢請求過來時(shí)在segment中被刪除的文件是能夠查出來的,但是當(dāng)返回結(jié)果時(shí)會根據(jù)commit point維護(hù)的那個(gè).del文件把已經(jīng)刪除的文檔過濾掉

translog日志文件: 為了防止elasticsearch宕機(jī)造成數(shù)據(jù)丟失保證可靠存儲,es會將每次寫入數(shù)據(jù)同時(shí)寫到translog日志中。

**os cache:**操作系統(tǒng)里面,磁盤文件其實(shí)都有一個(gè)東西,叫做os cache,操作系統(tǒng)緩存,就是說數(shù)據(jù)寫入磁盤文件之前,會先進(jìn)入os cache,先進(jìn)入操作系統(tǒng)級別的一個(gè)內(nèi)存緩存中去。

ElasticSearch 底層讀寫原理,ElasticSearch,elasticsearch,數(shù)據(jù)庫

Refresh

  • 將文檔先保存在Index buffer中,以refresh_interval為間隔時(shí)間,定期清空buffer,生成 segment,借助文件系統(tǒng)緩存的特性,先將segment放在文件系統(tǒng)緩存中,并開放查詢,以提升搜索的實(shí)時(shí)性

Translog

  • Segment沒有寫入磁盤,即便發(fā)生了宕機(jī),重啟后,數(shù)據(jù)也能恢復(fù),從ES6.0開始默認(rèn)配置是每次請求都會落盤

Flush文章來源地址http://www.zghlxwxcb.cn/news/detail-848755.html

  • 刪除舊的translog 文件
  • 生成Segment并寫入磁盤│更新commit point并寫入磁盤。ES自動完成,可優(yōu)化點(diǎn)不多

到了這里,關(guān)于ElasticSearch 底層讀寫原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Elasticsearch 底層技術(shù)原理以及性能優(yōu)化實(shí)踐

    Elasticsearch是一個(gè)基于Lucene庫的開源搜索引擎,支持分布式、多租戶和全文搜索功能。它使用了RESTful API接口可以簡化對Elasticsearch的集成和擴(kuò)展。 Elasticsearch廣泛應(yīng)用于全文搜索、日志存儲和分析、安全事件檢測、業(yè)務(wù)指標(biāo)分析等領(lǐng)域。 Elasticsearch是一個(gè)分布式系統(tǒng)由多個(gè)節(jié)點(diǎn)

    2024年02月08日
    瀏覽(23)
  • 五、淺析[ElasticSearch]底層原理與分組聚合查詢

    五、淺析[ElasticSearch]底層原理與分組聚合查詢

    集群節(jié)點(diǎn)介紹 es配置文件夾中 客戶端節(jié)點(diǎn) 當(dāng)主節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)配置都設(shè)置為false的時(shí)候,該節(jié)點(diǎn)只能處理路由請求,處理搜索,分發(fā)索引操作等,從本質(zhì)上來說該客戶節(jié)點(diǎn)表現(xiàn)為智能負(fù)載平衡器。獨(dú)立的客戶端節(jié)點(diǎn)在一個(gè)比較大的集群中是非常有用的,他協(xié)調(diào)主節(jié)點(diǎn)和數(shù)據(jù)節(jié)

    2024年02月16日
    瀏覽(18)
  • ElasticSearch學(xué)習(xí)筆記-第四章 ES分片原理以及讀寫流程詳解

    ElasticSearch學(xué)習(xí)筆記-第四章 ES分片原理以及讀寫流程詳解

    在學(xué)習(xí)ES分片原理以及讀寫流程之前,需要先學(xué)習(xí)一些ES的核心概念以及ES集群環(huán)境的相關(guān)知識 4.1 ES核心概念 4.1.1 索引 索引(Index)相當(dāng)于MySQL中的數(shù)據(jù)庫,一個(gè)索引就是一個(gè)擁有幾分相似特征的文檔的集合。 4.1.2 類型 類型(Type)相當(dāng)于MySQL中的表,一個(gè)類型就是索引的一個(gè)邏輯上

    2024年02月06日
    瀏覽(54)
  • 數(shù)據(jù)庫底層運(yùn)行原理之——事務(wù)管理器

    數(shù)據(jù)庫底層運(yùn)行原理之——事務(wù)管理器

    一般所有關(guān)系型數(shù)據(jù)庫內(nèi)部都有自己的事務(wù)機(jī)制,進(jìn)程是如何保證每個(gè)查詢在自己的事務(wù)內(nèi)執(zhí)行的,通過這篇文章來簡單介紹一下。 我們可以理解為數(shù)據(jù)庫是由多種相互交互的組件構(gòu)成的,數(shù)據(jù)庫一般可以用如下圖形來理解: 事務(wù)管理器就是今天要介紹的其中一個(gè)組件:

    2023年04月22日
    瀏覽(26)
  • Oracle架構(gòu)_數(shù)據(jù)庫底層原理、機(jī)制 (授人以漁)

    Oracle架構(gòu)_數(shù)據(jù)庫底層原理、機(jī)制 (授人以漁)

    目錄 系統(tǒng)全局區(qū)SGA 高速緩存緩沖區(qū)(數(shù)據(jù)庫緩沖區(qū)) 日志緩沖區(qū) 共享池 其他結(jié)構(gòu) 用戶連接進(jìn)程 用戶進(jìn)程User Process Server Process服務(wù)進(jìn)程 程序全局區(qū)PGA Oracle的connect連接和session會話與User Process緊密相關(guān) 后臺進(jìn)程 數(shù)據(jù)庫寫入進(jìn)程(DBWn) 檢查點(diǎn)(CKPT) 進(jìn)程監(jiān)視進(jìn)程(PMON) 系統(tǒng)監(jiān)視進(jìn)程

    2024年01月20日
    瀏覽(19)
  • 客戶端讀寫HBase數(shù)據(jù)庫的運(yùn)行原理

    客戶端讀寫HBase數(shù)據(jù)庫的運(yùn)行原理

    1.HBase的特點(diǎn) HBase是一個(gè)數(shù)據(jù)庫,與RDMS相比,有以下特點(diǎn): ① 它不支持SQL ② 不支持事務(wù) ③ 沒有表關(guān)系,不支持JOIN ④ 有列族,列族下可以有上百個(gè)列 ⑤ 單元格,即列值,可以存儲多個(gè)版本的值,每個(gè)版本都有對應(yīng)時(shí)間戳 ⑥ 行鍵按照字典序升序排列 ⑦ 元數(shù)據(jù) 和 數(shù)據(jù) 分

    2024年02月10日
    瀏覽(25)
  • Elasticsearch 對比傳統(tǒng)數(shù)據(jù)庫:深入挖掘 Elasticsearch 的優(yōu)勢

    Elasticsearch 對比傳統(tǒng)數(shù)據(jù)庫:深入挖掘 Elasticsearch 的優(yōu)勢

    當(dāng)你為項(xiàng)目選擇數(shù)據(jù)庫或搜索引擎時(shí),了解每個(gè)選項(xiàng)的細(xì)微差別至關(guān)重要。 今天,我們將深入探討 Elasticsearch 的優(yōu)勢,并探討它與傳統(tǒng) SQL 和 NoSQL 數(shù)據(jù)庫的比較。 Elasticsearch 以強(qiáng)大的 Apache Lucene 庫為基礎(chǔ),是一個(gè)分布式搜索和分析引擎。 它以其速度、可擴(kuò)展性以及快速索引

    2024年02月10日
    瀏覽(25)
  • elasticsearch中的數(shù)據(jù)類型search_as_you_type及查看底層Lucene索引

    elasticsearch中的數(shù)據(jù)類型search_as_you_type及查看底層Lucene索引

    search_as_you_type字段類型用于自動補(bǔ)全,當(dāng)用戶輸入搜索的時(shí)候,還沒輸完就可以提示用戶相關(guān)內(nèi)容。as_you_type應(yīng)該是說當(dāng)你打字的時(shí)候。它會給索引里的這個(gè)類型的字段添加一些子字段_2gram _3gram和_index_prefix。_2gram的意思是,如果一個(gè)值是abcd, 2 gram就是ab bc cd, 3 gram就是

    2024年02月12日
    瀏覽(21)
  • elasticsearch 數(shù)據(jù)庫擴(kuò)容

    遇見的問題: Failed to execute phase [query], all shards failed; shardFailures {[eo918sbJQ8-luXJZR5LyVQ] [todayonduty][0]: RemoteTransportException[[node-1][192.168.10.113:9300] [indices:data/read/search[phase/query]]]; nested: IllegalArgumentException[Inner result window is too large, the inner hit definition\\\'s [null]\\\'s from + size must be less than o

    2023年04月08日
    瀏覽(22)
  • Elasticsearch數(shù)據(jù)庫

    Elasticsearch數(shù)據(jù)庫

    Elasticsearch和MongoDB/Redis/Memcache一樣,是非關(guān)系型數(shù)據(jù)庫。是一個(gè)接近實(shí)時(shí)的搜索平臺,從索引這個(gè)文檔到這個(gè)文檔能夠被搜索到只有一個(gè)輕微的延遲,企業(yè)應(yīng)用定位:采用Restful API標(biāo)準(zhǔn)的可擴(kuò)展和高可用的實(shí)時(shí)數(shù)據(jù)分析的全文搜索工具。 可拓展:支持一主多從且擴(kuò)容簡易,只

    2024年02月04日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包