ElasticSearch架构介绍及原理解析

        Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎,用于处理大量的数据。它是由 Elasticsearch BV 公司开发,并且是用 Java 语言编写的。Elasticsearch 基于 Lucene 搜索引擎,提供了 RESTful API,允许你通过 JSON 格式的请求与其通信。
        Elasticsearch 的设计目的是为了使得全文搜索变得简单和高效。它被广泛应用于各种不同的场景,如日志数据分析、应用搜索、网站搜索等。Elasticsearch 支持分布式搜索,这意味着你可以将数据分布在多个服务器上,并能够并行处理大量的数据。


         Elasticsearch 架构
        Elasticsearch 的架构设计是为了满足现代应用程序的高性能、高可用性和高可扩展性需求。下面是 Elasticsearch 的一些关键组件和它们在架构中的作用:
        1. **节点(Nodes)**:
   - Elasticsearch 集群由多个节点组成,每个节点是一个独立的 Elasticsearch 实例。
   - 节点可以是主节点(Master Node)、数据节点(Data Node)或客户端节点(Client Node)。
   - 主节点负责集群的管理和控制,如创建、删除和分配索引。
   - 数据节点存储数据并提供搜索功能。
   - 客户端节点通常用于执行搜索请求,并将请求分发到数据节点。
        2. **集群(Cluster)**:
   - 集群是由多个节点组成的 Elasticsearch 实体,它能够处理跨节点的搜索和数据存储。
   - 集群有一个唯一的名字,默认是“elasticsearch”。
        3. **索引(Indices)**:
   - 索引是一个包含多个文档的数据库,文档是可搜索的数据单元。
   - 索引可以被看作是关系数据库中的数据库。
   - 每个索引由多个分片(Shards)组成,分片是数据的物理副本。
        4. **分片(Shards)**:
   - 分片是索引的物理分割,用于提高数据的可扩展性和可用性。
   - 分片可以分布在不同的数据节点上。
   - 每个分片可以有一个或多个副本(Replicas),副本提供高可用性和负载均衡。
        5. **映射(Mappings)**:
   - 映射定义了索引中文档的结构和类型。
   - 当你向索引中添加文档时,Elasticsearch 会根据映射的定义来解析文档。
        6. **搜索(Search)**:
   - Elasticsearch 支持丰富的搜索功能,如布尔搜索、范围搜索、聚合搜索等。
   - 搜索请求通过 Elasticsearch 的 RESTful API 发送,并返回 JSON 格式的结果。
        7. **副本(Replicas)**:
   - 副本是为了提高数据的可扩展性和可用性而创建的数据分片的副本。
   - 副本可以分布在不同的数据节点上,以实现数据的冗余和负载均衡。
        8. **协调节点(Coordinating Node)**:
   - 在多节点环境中,每个搜索请求都会被一个协调节点处理。
   - 协调节点负责将搜索请求分发到相关的数据节点,并收集结果。
        Elasticsearch 原理解析


        Elasticsearch 的核心原理是基于 Lucene 的搜索引擎。下面是 Elasticsearch 的一些关键原理:
        1. **文档索引**:
   - 当向 Elasticsearch 索引中添加文档时,它会将文档转换为 Lucene 的索引格式。
   - 索引包含文档的文本内容和元数据,如文档的 ID、类型和字段。
        2. **倒排索引(Inverted Index)**:
   - Lucene 使用倒排索引来存储索引数据,它是一种将单词映射到包含这些单词的文档的索引。
   - 倒排索引使得搜索操作非常高效,因为你可以快速找到包含特定单词的文档。
        3. **分片和副本**:
   - 分片是数据的物理分割,用于提高数据的可扩展性和可用性。
   - 副本提供数据的冗余和高可用性,当一个分片不可用时,Elasticsearch 可以使用副本来继续提供服务。
        4. **搜索和查询**:
   - 搜索请求通过 Elasticsearch 的 RESTful API 发送到协调节点。
   - 协调节点将请求分发到相关的数据节点,并收集结果。
   - Elasticsearch 支持丰富的查询语言,如布尔查询、范围查询和聚合查询。
        5. **高可用性和负载均衡**:
   - Elasticsearch 支持跨多个节点的搜索和数据存储,以实现高可用性和负载均衡。
- 主节点负责管理和协调集群中的节点,包括分配分片、处理集群级别的操作等。
- 数据节点负责存储数据和处理搜索请求,它们可以处理来自客户端的请求,也可以响应协调节点的搜索请求。
        6. **自动发现和集群健康监测**:
   - Elasticsearch 节点通过心跳机制自动发现集群中的其他节点。
   - 集群健康监测机制可以监控节点的状态和集群的整体健康状况,如果发现节点故障,Elasticsearch 可以将故障节点的分片重新分配到健康的节点上。
        7. **数据同步和更新**:
   - 当文档被添加到 Elasticsearch 时,它首先被写入到主分片上。
   - 然后,Elasticsearch 会自动将文档同步到副本分片上,以确保数据的冗余和可用性。
   - 如果文档被更新或删除,Elasticsearch 会同步这些更改到所有的副本分片上。
        8. **分布式搜索**:
   - 分布式搜索允许 Elasticsearch 跨多个节点并行处理搜索请求。
   - 协调节点将搜索请求分发到相关的数据节点,并收集结果,然后返回给客户端。
        总结
        Elasticsearch 是一个强大的全文搜索和分析引擎,它基于 Lucene 搜索引擎,并提供了丰富的功能和特性。Elasticsearch 的架构设计是为了满足现代应用程序的高性能、高可用性和高可扩展性需求。它的核心原理包括文档索引、倒排索引、分片和副本、搜索和查询、高可用性和负载均衡、数据同步和更新以及分布式搜索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/272868.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DFS例题(n皇后问题)C++(Acwing)

代码&#xff1a; #include <iostream>using namespace std;const int N 20;int n; char g[N][N]; bool col[N], dg[N], udg[N];void dfs(int u) {if(u n){for(int i 0; i < n; i) puts(g[i]);puts("");return; }for(int i 0; i < n…

数字化审计智慧

简析内部审计数字化转型的方法和路径 内部审计是一种独立的、客观的确认和咨询活动&#xff0c;包括鉴证、识别和分析问题以及提供管理建议和解决方案。狭义的数字化转型是指将企业经营管理和业务操作的各种行为、状态和结果用数字的形式来记录和存储&#xff0c;据此再对数据进…

【xv6操作系统】Lab systems calls

一、实验前须知 阅读 xv6 文档的第 2 章和第 4 章的 4.3 节和 4.4 节以及相关源文件&#xff1a; 系统调用的用户空间代码在 user/user.h 和 user/usys.pl 中。 内核空间代码在 kernel/syscall.h 和 kernel/syscall.c 中。 与进程相关的代码在 kernel/proc.h 和 kernel/proc.c…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageSpan)

Text组件的子组件&#xff0c;用于显示行内图片。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageSpan(value: ResourceStr | PixelMap) 参数&#xff1a; 参数名参数类…

大模型学习过程记录

一、基础知识 自然语言处理&#xff1a;能够让计算理解人类的语言。 检测计算机是否智能化的方法&#xff1a;图灵测试 自然语言处理相关基础点&#xff1a; 基础点1——词表示问题&#xff1a; 1、词表示&#xff1a;把自然语言中最基本的语言单位——词&#xff0c;将它转…

两天学会微服务网关Gateway-Gateway网关限流

锋哥原创的微服务网关Gateway视频教程&#xff1a; Gateway微服务网关视频教程&#xff08;无废话版&#xff09;_哔哩哔哩_bilibiliGateway微服务网关视频教程&#xff08;无废话版&#xff09;共计17条视频&#xff0c;包括&#xff1a;1_Gateway简介、2_Gateway工作原理、3…

python基础——条件判断和循环【if,while,for,range】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下条件判断语句if和循环语句while&#xff0c;for在python中需要注意的地方。 建议已有一定了解&#xff08;对语句的执行逻辑清楚&#xff09;的读者观看&#xff0c;如果对条件判断和循环的执行逻辑不太清楚&#xff0c;也可…

win11家庭版docker和milvus

docker 1、官网下载docker文件Get Started | Docker&#xff0c;选择download for windows下载。 2、双击打开下载好的文件Docker Desktop Installer.exe&#xff0c;add shortcut to desktop选择√代表同意添加快捷键到桌面&#xff0c;如果不勾选就说明不创建快捷键&#x…

阿里云服务器多少钱1个月?2024年最新报价5元一个月

阿里云服务器一个月多少钱&#xff1f;最便宜5元1个月。阿里云轻量应用服务器2核2G3M配置61元一年&#xff0c;折合5元一个月&#xff0c;2核4G服务器30元3个月&#xff0c;2核2G3M带宽服务器99元12个月&#xff0c;轻量应用服务器2核4G4M带宽165元12个月&#xff0c;4核16G服务…

跨平台大小端判断与主机节序转网络字节序使用

1.macOS : 默认使用小端 ,高位使用高地址,转换为网络字节序成大端 #include <iostream> #include <arpa/inet.h> int main() {//大小端判断union{short s;char c[sizeof(short)];}un;un.s = 0x0102;printf("低地址:%d,高地址:%d\n",un.c[0],un.c[1]);if …

安卓部分手机使用webview加载链接后白屏(Android低版本会出现的问题)

前言 大爷&#xff1a;小伙我这手机怎么打开你们呢这个是白屏什么都不显示。 大娘&#xff1a;小伙我这也是打开你们呢这功能&#xff0c;就是一个白屏什么也没有&#xff0c;你们呢的应用不会有病毒吧。 小伙&#xff1a;我的手机也正常&#xff1b; 同事&#xff1a;我的也正…

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略&#xff08;源码解读&#xff09; 1.继承关系图1.1 接口&#xff1a;ChannelSelector1.2 抽象类&#xff1a;StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

全栈的自我修养 ———— css中常用的布局方法flex和grid

在项目里面有两种常用的主要布局:flex和grid布局&#xff08;b站布局&#xff09;&#xff0c;今天分享给大家这两种的常用的简单方法&#xff01; 一、flex布局1、原图2、中心对齐3、主轴末尾或者开始对其4、互相间隔 二、grid布局1、基本效果2、加间隔3、放大某一个元素 一、…

Linux第74步_“设备树”下的LED驱动

使用新字符设备驱动的一般模板&#xff0c;以及设备树&#xff0c;驱动LED。 1、添加“stm32mp1_led”节点 打开虚拟机上“VSCode”&#xff0c;点击“文件”&#xff0c;点击“打开文件夹”&#xff0c;点击“zgq”&#xff0c;点击“linux”&#xff0c;点击“atk-mp1”&am…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络&#xff08;GAN&#xff09;模型&#xff0c;包括编码器&#xff08;Encoder&#xff09;、解码器&#xff08;Decoder&#xff09;、生成器&#xff08;ResnetGenerator&#xff09;和判别器&#xff08;Discriminator&#xff09;。…

LCR 112. 矩阵中的最长递增路径【leetcode】/dfs+记忆化搜索

LCR 112. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对于每个单元格&#xff0c;你可以往上&#xff0c;下&#xff0c;左&#xff0c;右四个方向移动。 不能 在 对角线 方向上移动或移动到 边界外&#xff08;即不允…

前端覆盖率报告生成

前端精准测试是精准测试体系的一部分&#xff0c;但是由于前端项目比较灵活&#xff0c;各种框架&#xff0c;脚手架再加上开发同学写的不够规范&#xff0c;所以投入产出比较低&#xff0c;这部分内容在网上的资料也比较少。为了完善我们的精准测试体系&#xff0c;今年做了前…

21、状态模式(行为性模式)

版本一、get状态指针 #include <iostream> using namespace std;//前置声明 class Context;//状态 class State{ public://4个状态virtual void toUp (Context& context){ }virtual void toDown (Context& context){ }virtual void toLeft (Context& cont…

学习和认知的四个阶段,以及学习方法分享

本文分享学习的四个不同的阶段&#xff0c;以及分享个人的一些学习方法。 一、学习认知的四个阶段 我们在学习的过程中&#xff0c;总会经历这几个阶段&#xff1a; 第一阶段&#xff1a;不知道自己不知道&#xff1b; 第二阶段&#xff1a;知道自己不知道&#xff1b; 第三…

命名实体识别,根据实体计算准确率、召回率和F1

文章目录 简介数据格式介绍准确率、召回率和F1评估评估代码评估结果 进一步阅读参考 简介 使用大模型训练完命名实体识别的模型后&#xff0c;发现不知道怎么评估实体识别的准确率、召回率和F1。于是便自己实现了代码&#xff0c;同时提供了完整可运行的项目代码。 完整代码&…