大家读完觉得有帮助记得关注和点赞!!!
Elasticsearch (ES) 工作原理与架构
一、Elasticsearch 概述
Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建,能够实现近实时的搜索和分析功能。它主要用于全文搜索、结构化搜索、分析以及这三者的组合。
二、核心工作原理
1. 倒排索引 (Inverted Index)
Elasticsearch 的核心是 Lucene 的倒排索引技术:
-
传统索引:文档→单词
-
倒排索引:单词→文档
-
包含单词的文档列表和单词在文档中的位置信息
2. 近实时 (NRT) 搜索
-
文档变更不会立即可搜索,但会在1秒内变为可搜索
-
通过 refresh 操作实现,默认每秒执行一次
-
写入流程:内存缓冲区 → refresh → 新的段(segment) → 可搜索
3. 分布式架构
-
自动分片 (Sharding):索引被分成多个分片
-
副本 (Replication):每个分片可以有多个副本
-
节点自动发现和集群状态管理
三、Elasticsearch 架构
1. 集群 (Cluster)
-
由一个或多个节点组成
-
通过唯一的集群名称标识
-
跨节点提供联合索引和搜索能力
2. 节点 (Node)
节点类型:
-
主节点 (Master-eligible node):负责集群管理操作
-
数据节点 (Data node):存储数据并执行数据相关操作
-
协调节点 (Coordinating node):路由请求,聚合结果
-
Ingest 节点:预处理文档
-
机器学习节点:运行机器学习任务
3. 索引 (Index)
-
类似数据库中的"数据库"概念
-
由一组具有相似特征的文档组成
-
由一个或多个分片组成
4. 分片 (Shard)
-
主分片 (Primary Shard):文档的存储单元,索引创建时定义
-
副本分片 (Replica Shard):主分片的拷贝,提供高可用性
5. 文档 (Document)
-
索引中的基本数据单元
-
使用 JSON 格式表示
-
每个文档有唯一 ID
四、数据写入流程
-
客户端发送写入请求到协调节点
-
协调节点根据文档ID确定目标分片
-
请求被转发到主分片所在节点
-
主分片节点执行写入操作
-
并行将写入操作复制到副本分片
-
所有副本分片确认后,主分片节点返回成功响应
五、数据搜索流程
-
客户端发送搜索请求到协调节点
-
协调节点将查询广播到所有相关分片(主或副本)
-
每个分片本地执行查询并返回结果
-
协调节点合并、排序结果
-
返回最终结果给客户端
六、关键技术特性
-
分布式搜索:自动分片和负载均衡
-
高可用性:副本机制和故障转移
-
水平扩展:轻松添加节点扩展容量
-
RESTful API:所有操作通过HTTP接口
-
多租户:支持多个索引和多种查询类型
-
聚合分析:强大的数据分析能力
七、典型应用场景
-
全文搜索
-
日志和事件数据分析 (ELK Stack)
-
指标分析
-
安全分析
-
业务智能
-
地理空间数据分析
Elasticsearch 的分布式特性和强大的搜索分析能力使其成为现代数据平台的重要组成部分。
1644

被折叠的 条评论
为什么被折叠?



