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)和值。

  • 示例 :

    json 复制代码
    {
      "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 创建,例如:

      bash 复制代码
      curl -X PUT "localhost:9200/my-index"
  4. 分片(Shard)

    • 数据分片单元,主分片和副本分片共同确保高可用和性能。
    • 主分片数影响并行性,副本数影响容错性。
  5. 文档(Document)

    • JSON 格式的数据单元,存储在索引中。

    • 通过唯一 ID 标识,例如:

      bash 复制代码
      curl -X POST "localhost:9200/my-index/_doc/1" -d '{"title": "Test"}'
  6. 映射(Mapping)

    • 定义字段的类型和索引方式。

    • 示例:

      json 复制代码
      {
        "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 执行搜索和分析。

    • 示例:

      bash 复制代码
      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 的架构是一个分布式系统,核心由集群、节点、索引、分片和文档组成。它通过倒排索引实现高效搜索,通过主分片和副本分片确保数据可靠性和性能。基本概念如映射、复制和查询是理解其功能的关键。如果需要深入某部分(例如分片分配或查询优化),可以告诉我,我会进一步讲解!

复制代码
相关推荐
AI日报派送佬7 小时前
2026年10月12日AI行业日报|GPT-6.1 Sol超长上下文免费开放,多智能体成本陷阱暴露,算力供需失衡持续发酵
大数据·人工智能·openai·苹果·ai日报·智能体技术·deepseekharness
泡干脆面就番茄7 小时前
Hive入门:架构解析与安装部署实录
大数据·数据仓库·hive·hadoop·架构
Nefu_lyh7 小时前
【工作杂谈_20261012】数据平台与工程治理: Spark OOM 排查:Java Heap、Executor 与代码内存模型
java·大数据·spark
承渊政道7 小时前
CentOS 7单机部署Elasticsearch 7.17.29:从启动报错、CRUD验证到固定公网地址的完整过程
linux·elasticsearch·centos·内网穿透·cpolar·单机部署
APItesterCris7 小时前
告别反复手工查价:用 Open‑Claw 搭建商品监控与数据分析小工具
大数据·数据库·数据仓库·自动化
鼓掌MVP7 小时前
决定全案的智能Agent
大数据·人工智能·机器学习
Tongzhi20267 小时前
2026 年考勤行业趋势:考勤正在从“打卡工具“变成“人力成本中枢“
大数据·数据结构·数据仓库·科技·数据库开发
计算机编程指导师7 小时前
计算机毕设选题:基于Spark+Django的水质多指标关联分析与可视化系统源码 毕业设计 选题推荐 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·水质
计算机编程指导师8 小时前
【大数据毕设】Hadoop+Spark台北市住宅价格数据可视化分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·住宅价格
nvd1116 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink