Elasticsearch架构基本原理

Elasticsearch的架构原理可以详细分为以下几个方面进行介绍:

一、Elasticsearch基本概念

Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它支持全文搜索、结构化搜索、半结构化搜索、数据分析、地理位置和对象间关联关系搜索等功能。ES使用Java编写,隐藏了Lucene的复杂性,为开发者提供了一套统一的API和client。

二、Elasticsearch节点类型

  1. Master节点:
    • 主要负责:管理索引(如创建、删除索引)、分配分片、维护元数据、管理集群节点状态。
    • 特点:不负责数据写入和查询,比较轻量级。
    • 选举过程:通过Zen Discovery机制找到集群中的其他节点,并建立连接,然后从候选主节点中选举出一个主节点。
  2. DataNode节点:
    • 主要负责:数据写入、数据检索。大部分ES的压力都集中在DataNode节点上。
    • 特点:可以保存数据的节点,负责保存分片数据。
    • 决策:由Master Node决定如何把分片分发到数据节点上。
  3. 其他节点类型:
    • Master eligible nodes:可以参与选举的合格节点,每个节点启动后默认就是一个Master eligible节点。
    • Ingest Node:数据前置处理转换节点,支持pipeline管道设置,用于对数据进行过滤、转换等操作。
    • Machine Learning Node:负责运行机器学习的Job,用于异常检测等。

三、分片和副本机制

  1. 分片(Shard):
    • ES将索引的数据分成若干部分,分布在不同的服务器节点中。每个分片是一个独立的、可读写的Lucene索引。
    • 主分片数在索引创建时指定,后续不允许修改。
  2. 副本分片(Replica Shard):
    • 是主分片的拷贝,用于实现数据的冗余和高可用性。
    • 每个分片可以有多个副本分片,副本分片可以分布在不同的节点上。

四、Elasticsearch重要工作流程

  1. 文档写入原理:
    • 选择任意一个DataNode发送请求,该节点成为coordinating node(协调节点)。
    • 通过路由计算公式确定文档要写入的分片。
    • coordinating node将请求转发给对应的primary shard所在的DataNode。
    • Primary Shard处理请求,写入数据到索引库中,并将数据同步到Replica shard。
  2. 检索原理:
    • client发起查询请求,某个DataNode接收到请求后成为coordinating node。
    • coordinating node将查询请求广播到每一个数据节点,数据节点的分片处理查询请求。
    • 各分片将符合条件的数据返回给coordinating node,coordinating node汇总并排序结果后返回给client。

五、数据存储与索引

  • ES使用Lucene作为其底层数据存储引擎,数据存储在Lucene索引中。
  • ES支持近实时索引,通过refresh、flush和segment合并等机制确保数据的快速检索和更新。

六、集群管理

  • ES通过HTTP协议进行节点之间的通信,实现集群的状态管理和数据同步。
  • 支持集群的弹性伸缩,可以通过添加或移除节点来调整集群的规模。

以上是对Elasticsearch架构原理的详细介绍,涵盖了其基本概念、节点类型、分片和副本机制、重要工作流程、数据存储与索引以及集群管理等方面。

后续会持续更新分享相关内容,记得关注哦!

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值