首页 > 其他分享 >Elasticsearch:基础概念

Elasticsearch:基础概念

时间:2025-01-02 17:56:11浏览次数:3  
标签:索引 基础 概念 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 配置,它就会自动发现集群并加入到其中。但是在不同机器上启动节点的时候,为了加入到同一集群,你需要配置一个可连接到的单播主机列表。之所以配置为使用单播发现,以防止节点无意中加入集群。只有在同一台机器上
运行的节点才会自动组成集群。

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

七、水平扩容

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

标签:索引,基础,概念,Elasticsearch,分片,搜索,节点,集群
From: https://blog.csdn.net/yuming226/article/details/144879480

相关文章

  • 安装elasticsearch、kibana、ik分词器
    elasticSearch采用的倒排索引,那么如何使用elasticSearch一、安装elasticSearch1、创建目录用于存放下载的es.tar和kibana.tar/usr/local/docker/tools2、上传tar启动Docker出现此错误:CannotconnecttotheDockerdaemonatunix:///var/run/docker.sock.Isthedockerd......
  • 数论基础B
    数论基础B试除法判定质数暴力做法:枚举\(2\)~\(n-1\)的所有数,判断能否将\(n\)整除,如果存在一个数能把\(n\)整数,说明\(n\)不是质数实际上只需要枚举到\(\sqrt{n}\)即可,如果\(a\)是\(n\)的约数,那么\(\frac{n}{a}\)也是\(n\)的约数,我们只需要检验\(min(a,\fr......
  • 2025年Java基础面试题,附答案解析。
    1.Java支持多继承么?不支持,Java不支持多继承。每个类都只能继承一个类,但是可以实现多个接口。2.接口和抽象类的区别是什么?Java提供和支持创建抽象类和接口。它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可......
  • python基础while循环(break、continue)、格式化输出、运算符
    day2while循环break、continue相关知识、格式化输出打印1~100的数字a=1whilea<=100:print(a)a=a+1#continue结束本次循环,开始下一次开启下一次循环break直接结束循环flag=Truewhileflag:print(1)print(2)flag=Falsecontinueprint......
  • 【AI产品经理入门到精通】超详细基础教程:收藏这一篇就够了!祝大家2025年都能成功上岸
    什么是AI产品经理?AI产品经理,顾名思义,就是负责人工智能产品的规划、设计、开发和迭代的专业人士。他们不仅要对市场有敏锐的洞察力,还要对技术有深入的理解,能够将复杂的AI技术转化为用户友好的产品。为什么要学AI产品经理?根据脉脉《2023年人才报告》显示:人工智能成为2023......
  • Openlayers零基础教程【6】geojson实现点要素
    1.geojson定义geojson数据是矢量数据,是包含地理信息的json数据,格式是以key:value的形式存在的。后缀以geojson结尾2.geojson设置一个点要素本篇内容我们主要介绍使用geojson设置一个点要素,效果如下图所示。3.实现步骤:3.1.创建geojson数据/*创建geojson数据......
  • 大语言模型【基础】(二)微调需要多少算力?
    微调模型需要多少的GPU显存?一、模型【训练】占用显存【QWen2.5-32B为例】模型配置情况如下所示方法一:较为精确估计全量微调占用情况结论根据模型配置和假设的batchsize、序列长度:总显存需求:约388GB所需卡数:至少13张昇腾910B卡才能满足显存需求,推荐使用1......
  • 初识elasticsearch
    什么是elasticsearch一款非常强大的开源搜索引擎elasticsearch是elasticstack的核心,负责存储、搜索、分析数据。采用倒排索引正向索引:正排索引按照文档的顺序存储索引,索引的键是文档的标识符(如ID),值是文档的详细信息,如标题、内容摘要、发布日期等。这种结构使得正排索引适合......
  • JavaScript 的核心特性和TypeScript 的高级概念
    JavaScript核心特性JavaScript是一种动态的、弱类型的编程语言,广泛应用于Web开发中。它是Web页面上的脚本语言,也是Node.js生态系统的重要语言。JavaScript的核心特性包括:1. 动态类型弱类型语言:变量的类型在运行时确定,可以存储任何类型的数据,类型转换在运行时进行。......
  • 01xArduino程序基础
    Arduino程序基础使用C++编程,基本参考C++语法。每一句结尾用分号,注释用//,全大写单词是特有字符,不要乱用。函数用{}套起来。voidsetup(){//putyoursetupcodehere,torunonce://这里的代码在开始的时候运行一次codedoingsomething;//每一行代码......