Elasticsearch:基础概念

一、什么是Elasticsearch

Elasticsearch是基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产规模工作负载的速度和相关性进行了优化。使用 Elasticsearch 可以近乎实时地搜索、索引、存储和分析各种形状和大小的数据。Elasticsearch 是Elastic Stack的核心。它与Kibana相结合,为以下 Elastic 解决方案提供支持:

  • 可观察性

    • 日志、指标和跟踪:收集、存储和分析来自应用程序、系统和服务的日志、指标和跟踪。
    • 应用程序性能监控 (APM):监控和分析业务关键型软件应用程序的性能。
    • 真实用户监控 (RUM):监控、量化和分析用户与 Web 应用程序的交互。
    • OpenTelemetry:重复使用您现有的仪器,使用 OpenTelemetry 标准将遥测数据发送到 Elastic Stack。
  • 搜索加粗样式

    • 全文搜索:使用倒排索引、标记化和文本分析构建快速、相关的全文搜索解决方案。
    • 向量数据库:存储和搜索向量化数据,并使用内置和第三方自然语言处理 (NLP) 模型创建向量嵌入。
    • 语义搜索:使用同义词、密集向量嵌入和学习到的稀疏查询文档扩展等工具了解搜索查询背后的意图和上下文含义。
    • 混合搜索:使用最先进的排名算法将全文搜索与向量搜索相结合。
    • 构建搜索体验:向应用程序或网站添加混合搜索功能,或在组织的内部数据源上构建企业搜索引擎。
    • 检索增强生成 (RAG):使用 Elasticsearch 作为检索引擎,为一系列用例提供更相关、最新或专有的数据来补充生成式 AI 模型。
    • 地理空间搜索:使用地理空间查询搜索位置并计算空间关系。
  • 安全

    • 安全信息和事件管理 (SIEM):收集、存储和分析来自应用程序、系统和服务的安全数据。
    • 端点安全:监控和分析端点安全数据。
    • 威胁搜寻:搜索和分析数据以检测和应对安全威胁。

二、分片

一个索引可以存储超出单个节点硬件限制的大量数据。比如,一个具有10亿文档数据的索引占据1TB的磁盘空间,而任一节点都可能没有这样大的磁盘空间。后者单个节点处理搜索请求,响应太慢。为了解决这个问题,Elasticsearch提供了将索引划分成多分的能力,每一份就称之为分片。当创建一个索引的时候,可以指定分片的数量。每隔分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置到集群中的任何节点上。分片的重要性,主要有两方面:

  • 允许水平分割、扩展内容容量。
  • 允许分片之上进行分布式的、并行的操作,进而提高性能和吞吐量。
    至于一个分片怎样分布,文档怎样聚合和搜索请求,是完全右Elasticsearch管理的,对于作为用户来说,这个是透明的,无需关心。

三、副本(Replicas)

在一个网络、云环境里,失败随时都可能发生,在某个分片、节点处于离线或者消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为了此目的,Elasticsearch允许你创建分片的一份或多份拷贝,这个拷贝就叫做复制分片(副本)。

复制分片之所以重要,有两个主要原因:

  • 在分片或者节点失败的情况下,提供了可用性。所以副本分片不能与主分片在同一个节点上。
  • 扩展你的搜索量、吞吐量,因为搜索可以在所有的副本上并行运行。

总之,每个索引可以被分成多个分片。一个索引也可以被复制 0 次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。

分片和复制的数量可以在索引创建的时候指定。在索引创建之后,你可以在任何时候动态地改变复制的数量,但是你事后不能改变分片的数量。

默认情况下,Elasticsearch 中的每个索引被分片 1 个主分片和 1 个复制,这意味着,如果你的集群中至少有两个节点,你的索引将会有 1 个主分片和另外 1 个复制分片(1 个完全拷贝),这样的话每个索引总共就有 2 个分片, 我们需要根据索引需要确定分片个数。

四、分配Allocation

将分片分配给某个节点的过程,包括分配主分片或者副分片。如果是副本,还包括从主分片复制数据的过程。这个过程是由master节点完成的。

五、系统架构

在这里插入图片描述
当一个节点被选举成为主节点时, 它将负责管理集群范围内的所有变更,例如增加、
删除索引,或者增加、删除节点等。 而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。 任何节点都可以成为主节点。我们的示例集群就只有一个节点,所以它同时也成为了主节点。

作为用户,我们可以将请求发送到集群中的任何节点 ,包括主节点。 每个节点都知道
任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。

六、故障转移

当集群中只有一个节点在运行时,意味着会有一个单点故障问题——没有冗余。 幸运的是,我们只需再启动一个节点即可防止数据丢失。当你在同一台机器上启动了第二个节点时,只要它和第一个节点有同样的 cluster.name 配置,它就会自动发现集群并加入到其中。但是在不同机器上启动节点的时候,为了加入到同一集群,你需要配置一个可连接到的单播主机列表。之所以配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上
运行的节点才会自动组成集群。

如果启动了第二个节点,集群将会拥有两个节点 : 所有主分片和副本分片都已被分配 。
在这里插入图片描述

七、水平扩容

怎样为我们的正在增长中的应用程序按需扩容呢?当启动了第三个节点,我们的集群将会拥有三个节点的集群 : 为了分散负载而对分片进行重新分配 。
在这里插入图片描述

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

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

相关文章

安卓播放器TVbox或影视仓软件如何链接到xiaoya小雅超集?很详细的教程

前言 这里咱们说的安卓播放器软件指的是这个: 还有这个: 这两个软件只是个壳,你需要做的仅仅是把需要的内容填写到对应的位置即可。 开始这个教程之前,你需要先部署好小雅,如果没有部署小雅,这个教程基本…

Datawhale AI冬令营 动手学AI Agent

背景——什么是Agent 在人工智能领域,agent可以指一个能够感知环境并作出决策以实现特定目标的系统。比如,一个聊天机器人(chatbot)就是一个agent,它能够理解用户的输入并给出相应的回复。 学习目标 学会使用百宝箱平…

如何在IDEA一个窗口中导入多个项目

一般在IDEA窗口中想导入一个新项目,会提示我们在当前窗口还是新窗口。如果选新窗口,就会新打开一个窗口,此时新窗口里面只有新导入的项目。 而为了浏览起来更方便,需要实现在IDEA一个窗口中导入多个项目。具体步骤如下&#xff1…

面试经典问题 —— 链表之返回倒数第k个节点(经典的双指针问题)

目录 原题思路代码实现小结 原题 leetcode链接 : https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/description/ 思路 这题就是典型的双指针母题 第一个指针先移动k步,然后第二个指针再从头开始,这个时候这两个指针同时移动&am…

VMware安装配置

1、官网下载VMware16 (1)进入VMware官网https://www.vmware.com/cn.html,之后点击下载里的Workstation Pro: (2)之后选择你要下载的VMware的版本,找到合适的下载,我这里以Windows系…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(五)

****非斜体正文为原文献内容(也包含笔者的补充),灰色块中是对文章细节的进一步详细解释! 五、 解释评估(Explanation Evaluation) 在前面的章节中,我们介绍了不同的解释技术和它们的用途&#…

SQL 中的 EXISTS

我们先从 SQL 中最基础的 WHERE 子句开始。 比如下面这条 SQL 语句: 很显然,在执行这条 SQL 语句的时候,DBMS 会扫描 Student 表中的每一条记录,然后把符合 Sdept IS 这个条件的所有记录筛选出来,并放到结果集里面去…

C语言链表通关文牒0.5

之前排序创建链表那里用的是哨兵法,但是有局限性,这里介绍一个补充,不创建第一个空节点进行排序 NODE *create() {int val;NODE *head NULL; // 初始化头指针为NULLNODE *pC NULL; // 初始化指针,用于遍历链表while(1) {pri…

GAN对抗生成网络(一)——基本原理及数学推导

1 背景 GAN(Generative Adversarial Networks)对抗生成网络是一个很巧妙的模型,它可以用于文字、图像或视频的生成。 例如,以下就是GAN所生成的人脸图像。 2 算法思想 假如你是《古董局中局》的文物造假者(Generator,生成器)&a…

基于Python的携程旅游景点数据分析与可视化

基于Python的携程旅游景点数据分析与可视化 爬取景点、价格、开放状态、评论、热度、优惠政策等信息。 功能列表 指定城市爬取支持登录支持筛选支持评论爬取支持数据存在数据库支持生成Excel支持可视化 部分效果演示 爬取的旅游景点信息 生成Excel 指定城市爬取 可视化 部门…

SQL-leetcode-197. 上升的温度

197. 上升的温度 表: Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是该表具有唯一值的列。 没有具有相同 recordDate 的不同行。 该表包…

等待事件 ‘latch: row cache objects‘ 说明及解决方法

早上刚来的时候,收到zabbix 数据库连接数增长的告警,同时应用负责人也说查询很慢、很卡 查看该时间段 最多的等待事件 SELECT event,COUNT(1) num FROM V$ACTIVE_SESSION_HISTORY A WHERE A.SAMPLE_TIME BETWEEN TO_DATE(2025-01-02 09:00:00, YYYY-M…

HAL 库------中断相关函数

HAL_SuspendTick();是对SysTick中CTRL寄存器中TICKINT位清0 HAL_ResumeTick(); 刚好与上面函数相反,对SysTick中CTRL寄存器中TICKINT位置1,恢复stick中断。

IDEA开发Java应用的初始化设置

一、插件安装 如下图所示: 1、Alibaba Java Coding Guidelines 2.1.1 阿里开发者规范,可以帮忙本地自动扫描出不符合开发者规范的代码,甚至是代码漏洞提示。 右击项目,选择《编码规约扫描》,可以进行本地代码规范扫…

QT-------------多线程

实现思路 QThread 类简介: QThread 是 Qt 中用于多线程编程的基础类。可以通过继承 QThread 并重写 run() 方法来创建自定义的线程逻辑。新线程的执行从 run() 开始,调用 start() 方法启动线程。 掷骰子的多线程应用程序: 创建一个 DiceThre…

在C语言基础上的C++(深入理解类和对象)

1:构造函数 1:为什么使用构造函数 由于类的封装性,一般来说,数据成员是不能被外界访问的,所以对象的数据成员的初始化工作就给共有函数来完成了。如果定义了构造函数,那么只要对象一建立,就可…

ESP32_H2-ESP32_H2(IDF)学习系列-安装官方组件

1、 在VS Code项目工程中添加IDF组件注册表中的组件十分便捷。您只需按下“CtrlShiftP”快捷键快速进入命令面板,或者通过菜单栏的“查看”选项,选择“命令面板”来打开它。随后,在命令面板中输入“ESP-IDF: Show Component Registry”即可展…

【UE5】UnrealEngine源码构建2:windows构建unreal engine 5.3.2

参考大神知乎的文章:UE5 小白也能看懂的源码编译指南 据说会耗费400G的空间。 代码本身并不大,可能是依赖特别多,毕竟看起来UE啥都能干,核心还是c++的, 【UE5】UnrealEngine源码构建1:tag为5.3.2源码clone 本着好奇+ 学习的态度,想着也许有机会能更为深入的熟悉UE的机制…

[Qt] 常用控件 | QWidget | “表白程序2.0”

目录 一、控件概述 控件体系的发展阶段: 二、QWidget 核心属性 核心属性概览: 1、enabled 2、Geometry 实例 1: 控制按钮的位置 实例 2: 表白 程序 i、Window Frame 的影响 ii、API 设计理念 iii、Geometry 和 FrameGeometry 的区别 &#xf…

laravel部署到云服务器上,除了首页之外,区域页面找不到路由

laravel部署到云服务器上,除了首页之外,区域页面找不到路由,都是报404错误 解决方法: (注:本人服务器使用宝塔面板) 打开宝塔面板,找到该站点->配置文件 在下方增加如下代码 …