首页 > 其他分享 >Elasticsearch架构基本原理

Elasticsearch架构基本原理

时间:2024-07-01 20:30:25浏览次数:22  
标签:架构 基本原理 索引 Elasticsearch 分片 数据 节点 ES

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

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

标签:架构,基本原理,索引,Elasticsearch,分片,数据,节点,ES
From: https://blog.csdn.net/AOMGyz/article/details/140109171

相关文章

  • Elasticsearch:Painless scripting 语言(二)
    这是继上一篇文章“Elasticsearch:Painlessscripting语言(一)”的续篇。使用field API访问文档中的字段警告:FieldAPI仍在开发中,应视为测试版功能。API可能会发生变化,此迭代可能不是最终状态。有关功能状态,请参阅#78920。使用field API访问文档字段:field('my_......
  • 全新升级!中央集中式架构功能测试为新车型保驾护航
        “软件定义汽车”新时代下,整车电气电气架构向中央-区域集中式发展已成为行业共识,车型架构的变革带来更复杂的整车功能定义、更多的新技术的应用(如SOA服务化、智能配电等)和更短的车型研发周期,对整车和新产品研发的质量验证提出更高的要求。    作为国内较早开......
  • 单体架构的技术框架演变
    单体架构(MonolithicArchitecture)是一种传统的软件架构风格,在这种架构中,所有的功能单元都集成在一个独立的软件单元中,比如一个单一的代码库或者一个应用程序。在单体架构中,所有的功能,如业务逻辑、数据库操作、用户界面等,通常都是紧密耦合在一起的。随着业务需求的增长和技......
  • 构建高可用性、高性能和可扩展的Zabbix Server架构
    简介本教程讲解了一下如何设计构建一个高性能、高可靠、高扩展的Zabbix监控集群。架构图架构图PDF下载:https://songxwn.com/file/Zabbix_HA.pdfPigsty时序数据库集群ZabbixServer和Grafana的数据都是存放在数据库的,而Zabbix性能很大程度取决于数据库。所以要搭建数据......
  • 【AI 大模型】大模型应用架构 ( 业务架构 - AI Embedded、AI Copilot、AI Agent | 技
    文章目录一、大模型技术方向-大模型训练/大模型应用二、大模型应用-业务架构1、AIEmbedded模式2、AICopilot模式3、AIAgent模式三、大模型应用-技术架构1、提示词技术架构2、Agent+FunctionCalling技术架构3、RAG技术架构4、Fine-tuning微调技术......
  • kafka 和Zookeeper 集群架构设计对比分析
    kafka和Zookeeper集群架构设计对比分析Kafka和Zookeeper是两个关键的分布式系统组件,它们在集群架构设计上有显著的差异。下面是对它们在集群架构设计方面的对比分析。1.Kafka集群架构设计1.1基本架构Kafka是一个分布式消息系统,由多个Broker组成。每个Broke......
  • 基于java语言+springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、AP
    基于java语言+springboot技术架构开发的互联网智能3D导诊系统源码支持微信小程序、APP医院AI智能导诊系统源码一、智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建立症状、疾病和科室之间的对应规则实......
  • CPU架构
    基本架构一个CPU处理器中一般有多个运行核心,我们把一个运行核心称为一个物理核,每个物理核都可以运行应用程序每个物理核都拥有私有的一级缓存(Level1Cache,简称L1Cache),包括一级指令缓存和一级数据缓存,以及私有的2级别缓存(L2Cache)物理核的私有缓存,指的是缓存空间......
  • 【SQL】MySQL 的基础架构
    MySQL是一种广泛使用的开源关系型数据库管理系统,其架构设计具有高度的可扩展性和灵活性。理解MySQL的基础架构有助于更好地配置、优化和管理MySQL数据库。下面是MySQL的基础架构概述:MySQL架构概览MySQL的架构主要分为以下几个层次:连接层(ConnectionLayer)服务层(S......
  • 响应式架构
    介绍响应式架构(ReactiveArchitecture)是一种面向服务和事件的系统设计方法,旨在提高系统的可扩展性、弹性和容错能力。它适用于构建分布式系统,特别是在云环境和微服务架构中。响应式架构的核心理念是通过事件驱动和数据流来实现各个组件之间的解耦,从而提高整个系统的响应能......