Skip to content

核心概念

概述

Elasticsearch(ES)是一个基于Lucene的分布式搜索引擎,核心特点:

  • 分布式:天然支持集群
  • 全文搜索:强大的搜索能力
  • 实时性:近实时索引和搜索
  • RESTful:HTTP接口

架构组件

1. 集群(Cluster)

┌─────────────────────────────────────────┐
│            ES Cluster                   │
├─────────────────────────────────────────┤
│  ┌─────────┐ ┌─────────┐ ┌─────────┐   │
│  │ Node-1  │ │ Node-2  │ │ Node-3  │   │
│  │Master   │ │ Data    │ │ Data    │   │
│  └─────────┘ └─────────┘ └─────────┘   │
└─────────────────────────────────────────┘
  • 集群名(cluster.name)相同的所有节点
  • 集群健康状态:green、yellow、red

2. 节点(Node)

节点类型说明
Master负责集群管理(创建/删除索引、分配分片)
Data存储数据,处理查询
Ingest数据预处理(pipeline)
Coordinating协调请求转发,合并结果

配置示例:

yaml
node.master: true
node.data: true
node.ingest: true

3. 索引(Index)

Index = 逻辑命名空间

Shard = 物理存储单元(Lucene索引)

Segment = 实际存储文件
  • 索引是文档的逻辑容器
  • 索引名必须小写
  • 每个索引有主分片和副本分片

4. 文档(Document)

json
{
  "_index": "products",
  "_id": "1",
  "_source": {
    "name": "iPhone 15",
    "price": 999,
    "category": "phone"
  }
}
  • JSON格式的基本单位
  • _id唯一标识文档
  • _source存储原始数据

面试考点

Q: ES vs MySQL?

MySQLES
数据库索引
类型(已废弃)
文档
字段
索引倒排索引

Q: ES如何保证高可用?

  • 多节点集群
  • 主副分片副本
  • Master选举
  • 故障自动转移

Q: 为什么ES搜索快?

  • 倒排索引
  • 分布式并行查询
  • Segment检索
  • 缓存机制

最后更新: