es基本概念

Elasticsearch 的架構與基本概念

Elasticsearch(簡稱 ES)是一個開源的分布式搜索和分析引擎,基于 Apache Lucene 構建。它被廣泛用于全文搜索、日志分析、實時數據分析等場景。以下是其架構概述及其基本概念的詳細解釋。

Elasticsearch 的架構

Elasticsearch 的架構設計為分布式、高可用和可擴展,核心是一個多節點的集群結構。以下是其主要組成部分和工作方式:

1. 集群(Cluster)

  • 定義:一個 Elasticsearch 集群由多個節點(Node)組成,共同工作以存儲數據和處理請求。
  • 特性
    • 集群有一個唯一的名稱(默認 elasticsearch),用于區分不同的集群。
    • 節點通過網絡通信,共同維護數據和狀態。

2. 節點(Node)

  • 定義:運行 Elasticsearch 實例的單個服務器或進程。
  • 角色(可組合):
    • 主節點(Master Node):負責集群管理(如分片分配、節點加入/退出)。
    • 數據節點(Data Node):存儲數據,執行索引和搜索操作。
    • 攝取節點(Ingest Node):預處理數據。
    • 協調節點(Coordinating Node):路由請求和聚合結果。
  • 配置:通過 node.roles 指定(7.9+),例如 node.roles: ["master", "data"]
  • 特點:節點可以動態加入或離開集群,自動重新平衡數據。

3. 索引(Index)

  • 定義:類似于傳統數據庫中的“數據庫”,是數據的邏輯容器。
  • 特性
    • 每個索引包含一組文檔(Document),并定義了數據的結構(Mapping)。
    • 索引被分成多個分片存儲在集群中。
  • 示例logs-2023-01(日志索引)。

4. 分片(Shard)

  • 定義:索引被分成多個分片,每個分片是一個獨立的 Lucene 實例,存儲部分數據。
  • 類型
    • 主分片(Primary Shard):原始數據存儲位置,負責寫入。
    • 副本分片(Replica Shard):主分片的副本,用于冗余和高可用。
  • 特點
    • 分片數量在創建索引時指定(默認 1),不可更改。
    • 副本數量可動態調整(默認 1)。
  • 分布:分片分布在集群的多個節點上,實現負載均衡和容錯。

5. 文檔(Document)

  • 定義:索引中的基本數據單元,類似于數據庫中的一行。
  • 格式:JSON 格式,包含字段(Field)和值。
  • 示例
    {"id": 1,"title": "Elasticsearch Guide","content": "This is a guide to ES."
    }
    

6. 映射(Mapping)

  • 定義:定義文檔字段的類型和存儲方式,類似于數據庫的表結構。
  • 類型:文本(text)、關鍵字(keyword)、數字(integer/float)、日期(date)等。
  • 動態性
    • 默認動態映射:自動推斷字段類型。
    • 顯式映射:手動定義以優化性能。

7. 倒排索引(Inverted Index)

  • 定義:Lucene 核心數據結構,將詞(term)映射到包含該詞的文檔 ID。
  • 作用:支持快速全文搜索。
  • 示例
    Term       | Doc IDs
    -----------|---------
    elastic    | 1, 3
    search     | 1, 2
    

基本概念

以下是 Elasticsearch 的核心概念,幫助理解其工作機制:

  1. 集群(Cluster)

    • 一組協同工作的節點,共享數據和負載。
    • 通過 cluster.name 標識。
  2. 節點(Node)

    • 集群中的單個實例,承擔特定角色。
    • 通過配置文件(如 elasticsearch.yml)設置。
  3. 索引(Index)

    • 數據的邏輯分組,包含多個分片。
    • 通過 REST API 創建,例如:
      curl -X PUT "localhost:9200/my-index"
      
  4. 分片(Shard)

    • 數據分片單元,主分片和副本分片共同確保高可用和性能。
    • 主分片數影響并行性,副本數影響容錯性。
  5. 文檔(Document)

    • JSON 格式的數據單元,存儲在索引中。
    • 通過唯一 ID 標識,例如:
      curl -X POST "localhost:9200/my-index/_doc/1" -d '{"title": "Test"}'
      
  6. 映射(Mapping)

    • 定義字段的類型和索引方式。
    • 示例:
      {"mappings": {"properties": {"title": { "type": "text" },"date": { "type": "date" }}}
      }
      
  7. 倒排索引(Inverted Index)

    • 搜索的核心,支持關鍵詞快速定位文檔。
  8. 主選舉(Master Election)

    • 集群通過選舉選擇一個主節點,負責協調操作。
    • 使用 Zen Discovery(6.x)或 Voting(7.x+)機制。
  9. 復制(Replication)

    • 數據在主分片和副本分片間復制,確保高可用。
    • 寫入主分片后同步到副本。
  10. 查詢(Query)

    • 通過 REST API 執行搜索和分析。
    • 示例:
      curl -X GET "localhost:9200/my-index/_search?q=title:elastic"
      

架構工作流程

寫入流程

  1. 客戶端發送寫入請求到協調節點。
  2. 協調節點路由請求到主分片所在的數據節點。
  3. 主分片寫入數據并同步到副本分片。
  4. 多數副本確認后,返回成功響應。

搜索流程

  1. 客戶端發送搜索請求到協調節點。
  2. 協調節點廣播查詢到所有相關分片(主分片或副本)。
  3. 各分片執行查詢并返回結果。
  4. 協調節點聚合結果,返回給客戶端。

容錯機制

  • 主節點故障:自動選舉新主節點。
  • 數據節點故障:副本分片接管,集群重新分配分片。

架構圖示(簡易版)

[Client] --> [Coordinating Node]|+-----------+-----------+|                       |
[Master Node]       [Data Nodes]|[Shards: P0, R0, P1, R1]
  • Client:發送請求。
  • Coordinating Node:路由和聚合。
  • Master Node:管理集群狀態。
  • Data Nodes:存儲分片(P=Primary, R=Replica)。

優點與特性

  • 分布式:數據和負載分布在多節點。
  • 高可用:副本分片提供冗余。
  • 可擴展:動態添加節點。
  • 實時性:近實時搜索(默認 1 秒刷新)。

總結

Elasticsearch 的架構是一個分布式系統,核心由集群、節點、索引、分片和文檔組成。它通過倒排索引實現高效搜索,通過主分片和副本分片確保數據可靠性和性能。基本概念如映射、復制和查詢是理解其功能的關鍵。如果需要深入某部分(例如分片分配或查詢優化),可以告訴我,我會進一步講解!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900426.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900426.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900426.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《星環之城:量子迷霧下的網絡安全戰記》

點擊下面圖片帶您領略全新的嵌入式學習路線 🔥爆款熱榜 88萬閱讀 1.6萬收藏 序章:星環之隕 公元2145年,人類在火星軌道上建造了“星環之城”——一座由量子網絡連接的太空城邦。它的中樞AI“蓋婭”掌控著地球與殖民地的數據洪流&#xff…

《全棧+雙客戶端Turnkey方案》架構設計圖

今天分享一些全棧雙客戶端Turnkey方案的架構與結構圖。 1:三種分布式部署方案:網關方案,超級服務器單服方案,直連邏輯服方案 2: 單服多線程核心架構: 系統服務邏輯服服務 3: 系統服務的多線程池調度設計 4:LogicServer Update與ECS架構&…

打破界限:Android XML與Jetpack Compose深度互操作指南

在現有XML布局項目中逐步引入Jetpack Compose是現代Android開發的常見需求。本指南將全面介紹混合使用的最佳實踐、技術細節和完整解決方案。 一、基礎配置 1.1 Gradle配置 android {buildFeatures {compose true}composeOptions {kotlinCompilerExtensionVersion "1.5.3…

React-narice安卓打包流程

**1. 生成簽名密鑰 在項目的 android/app 目錄下生成簽名密鑰的步驟: 打開終端或命令提示符:導航到您的 React Native 項目的 android/app 目錄。 運行以下命令生成密鑰庫文件: keytool -genkeypair -v -keystore my-release-key.keystor…

嵌入式AI開源生態指南:從框架到應用的全面解析

嵌入式AI開源生態指南:從框架到應用的全面解析 引言 隨著人工智能技術的迅速發展,將AI能力部署到邊緣設備上的需求日益增長。嵌入式AI通過在資源受限的微控制器上運行機器學習模型,實現了無需云連接的本地智能處理,大幅降低了延…

深度學習中模型量化那些事

在深度學習中模型量化可以分為3塊知識點,數據類型、常規模型量化與大模型量化。本文主要是對這3塊知識點進行淺要的介紹。其中數據類型是模型量化的基本點。常規模型量化是指對普通小模型的量化實現,通常止步于int8的量化,絕大部分推理引擎都…

Redis-list類型

這里只是介紹命令使用 列表是用來存儲多個有序的字符串 可以用來充當棧和隊列的角色 列表特點: 列表中的元素是有序的,可以通過索引下標來獲取某個元素或者某個范圍的元素 獲取和刪除有區別 元素可以重復 命令 LPUSH 將一個或者多個元素從左側放入到list中(頭插法) lp…

Business English Certificates (BEC) 高頻詞匯背誦

Business English Certificates {BEC} 高頻詞匯背誦 References Cambridge English: Business Certificates, also known as Business English Certificates (BEC), are a suite of three English language qualifications for international business. abandon /??bnd?n/ …

第十四屆藍橋杯省賽真題解析(含C++詳細源碼)

第十四屆藍橋杯省賽 整數刪除滿分思路及代碼solution1 (40% 雙指針暴力枚舉)solution 2(優先隊列模擬鏈表 AC) 冶煉金屬滿分代碼及思路 子串簡寫滿分思路及代碼solution 1(60% 雙指針)solution 2&#xff0…

AI Agent開發大全第二十一課-如何開發一個MCP(從0開發一個MCP Client)

開篇 上一章《AI Agent開發大全第二十課-如何開發一個MCP(從0開發一個MCP Server)》里我們講了如何從0開始開發一個MCP Server。可以看到文中大量細節為MCP發明者官網Claude都不曾或者是遺漏的,而且還有那么多點遺漏,想要真正要在企業生產級環境使用MCP是需要做分布式開發的…

TypeScript面試題集合【初級、中級、高級】

初級面試題 什么是TypeScript? TypeScript是JavaScript的超集,由Microsoft開發,它添加了可選的靜態類型和基于類的面向對象編程。TypeScript旨在解決JavaScript的某些局限性,比如缺乏靜態類型和基于類的面向對象編程&#xff0c…

無錫無人機駕駛證培訓費用

無錫無人機駕駛證培訓費用,隨著科技的迅速發展,無人機在眾多行業中發揮著舉足輕重的作用。從影視制作到農業監測,再到物流運輸與城市規劃,無人機的應用場景不斷擴展,因此越來越多的人開始意識到學習無人機駕駛技能的重…

2181、合并零之間的節點

2181、[中等] 合并零之間的節點 1、問題描述: 給你一個鏈表的頭節點 head ,該鏈表包含由 0 分隔開的一連串整數。鏈表的 開端 和 末尾 的節點都滿足 Node.val 0 。 對于每兩個相鄰的 0 ,請你將它們之間的所有節點合并成一個節點&#xff…

相機的曝光和增益

文章目錄 曝光增益增益原理主要作用增益帶來的影響增益設置與應用 曝光 參考:B站優致譜視覺 增益 相機增益是指相機在拍攝過程中對圖像信號進行放大的一種操作,它在提高圖像亮度和增強圖像細節方面起著重要作用,以下從原理、作用、影響以…

小飛電視 2.7.0 | 高清秒播無卡頓的電視直播軟件

小飛電視采用了流行的天光YY殼進行二次開發,內置了熱門的肥羊源。更新后在加載速度和播放速度上有了顯著提升,并提供了豐富的內容和各種分類欄目,包括4K和8K頻道以及經典的直播內容如虎芽、斗魚、歪歪等。該軟件的最大特點是其穩定性和無廣告…

【Python爬蟲高級技巧】BeautifulSoup高級教程:數據抓取、性能調優、反爬策略,全方位提升爬蟲技能!

大家好,我是唐叔!上期我們聊了 BeautifulSoup的基礎用法 ,今天帶來進階篇。我將分享爬蟲老司機總結的BeautifulSoup高階技巧,以及那些官方文檔里不會告訴你的實戰經驗! 文章目錄 一、BeautifulSoup性能優化技巧1. 解析…

【愚公系列】《高效使用DeepSeek》055-可靠性評估與提升

??【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】?? ??開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! ?? 江湖人稱"愚公搬代碼",用七年如一日的精神深耕技術領域,以"…

C# Winform 入門(12)之制作簡單的倒計時

倒計時效果展示 控件展示 以下均是使用label來形成的 label 的 BorderStyle:Fixed3D ForeColor:Red Blackground:Black label 的屬性 Name: txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…

edge webview2 runtime跟Edge瀏覽器軟件安裝包雙擊無反應解決方法

軟件安裝報錯問題有需要遠程文章末尾獲取聯系方式,可以幫你遠程處理各類安裝報錯。 一 、edge webview2 runtime跟Edge瀏覽器軟件安裝包雙擊無反應 在安裝edge webview2 runtime跟Edge瀏覽器雙擊無反應沒有出現安裝界面。這個可能是 新版本的Edge WebView2 Runti…

TDengine 從入門到精通(2萬字長文)

目錄 第一章:走進 TDengine 的世界 TDengine 是個啥? TDengine 的硬核特性 性能炸裂 分布式架構,天生可擴展 SQL 用起來賊順手 寫入方式花樣多 內置緩存,省心又省力 TDengine 能干啥? 智能制造 能源管理 物聯網平臺 工業大數據 第二章:上手 TDengine:安裝與…