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.mzph.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:安装与…