基础概念
Index(索引)
类似于关系型数据库中的数据库,是具有相似特征的文档集合。索引名称必须小写。
Document(文档)
索引中的单条记录,以JSON格式存储。文档是可被索引的基础信息单元。
Type(类型)
7.x版本已废弃,8.x版本完全移除。一个索引只能有一种文档类型。
Mapping(映射)
定义文档字段的类型和属性,类似于数据库的表结构定义。
Node(节点)
集群中的单个服务器实例,存储数据并参与索引和搜索。
Cluster(集群)
一个或多个节点的集合,共同存储数据并提供搜索功能。
Shard(分片)
索引被分割成的多个部分,分布在不同节点上,实现水平扩展。
Replica(副本)
分片的复制,提供高可用性和故障转移,也可提高搜索性能。
┌─────────────────────────────────────────────────────────┐
│                      Cluster(集群)                      │
│  ┌─────────────────────────────────────────────────┐   │
│  │                  Index(索引)                   │   │
│  │  ┌─────────────────────────────────────────┐   │   │
│  │  │              Type(类型)                │   │   │
│  │  │  ┌─────────────────────────────────┐   │   │   │
│  │  │  │        Document(文档)          │   │   │   │
│  │  │  │  {                              │   │   │   │
│  │  │  │    "field1": "value1",         │   │   │   │
│  │  │  │    "field2": "value2"          │   │   │   │
│  │  │  │  }                              │   │   │   │
│  │  │  └─────────────────────────────────┘   │   │   │
│  │  └─────────────────────────────────────────┘   │   │
│  │  Primary Shard 1  │  Primary Shard 2  │ Replica │   │
│  └─────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────┘
                
1 与关系型数据库对比
理解Elasticsearch与传统数据库的对应关系
关系型数据库          Elasticsearch
─────────────────────────────────────────
Database      →     Index(索引)
Table         →     Type(已废弃)
Row           →     Document(文档)
Column        →     Field(字段)
Schema        →     Mapping(映射)
SQL           →     Query DSL
Index         →     所有字段默认索引
2 倒排索引原理
Elasticsearch使用倒排索引实现快速全文搜索
倒排索引概念
  • 正向索引:文档 → 词汇
  • 倒排索引:词汇 → 文档列表
  • 支持快速的关键词查找
  • 自动维护词频、位置等信息
# 示例文档
Doc1: "Elasticsearch is powerful"
Doc2: "Elasticsearch is fast"
Doc3: "Search is easy"

# 倒排索引结构
Term          Doc IDs
────────────────────────
elasticsearch  [1, 2]
is             [1, 2, 3]
powerful       [1]
fast           [2]
search         [3]
easy           [3]

# 搜索 "elasticsearch" → 立即返回 Doc1, Doc2
3 节点角色
Elasticsearch节点的不同角色分工
# Master Node(主节点)
- 管理集群状态
- 负责创建/删除索引
- 分配分片到节点
- 建议:3个专用主节点(防止脑裂)

# Data Node(数据节点)
- 存储数据分片
- 执行CRUD操作
- 执行搜索和聚合
- 需要大量磁盘和内存

# Ingest Node(摄取节点)
- 预处理文档数据
- 执行管道转换
- 减轻数据节点负担

# Coordinating Node(协调节点)
- 接收客户端请求
- 分发到数据节点
- 聚合返回结果
- 负载均衡作用