ElasticSearch存储介绍

2023-10-27

基本概念介绍

node

节点。一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。

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

主节点和副节点主要的作用如下:

  • 主节点负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。
  • 副节点可以用来分担读请求的压力, 同时当主节点挂掉之后, 会从副节点选举一个作为主节点。

elas_0204

上图是官网的一个例子, 启动了三个节点node1, node2, node3组成了一个集群,该集群有两个分片P和R, 并对每个节点上的分片进行重新分配,将node1的P0分片和node2的R3分片分配到node3上。

shard

分片。是Lucene的最小索引单元。一个shard是一个Lucene的实例。分散在不同的节点Node上,不会存在两个相同的shard存储在同一个node上。

分片又分为主分片和副本分片。在索引建立的时候已经确定了主分片数,副本分片数可以随时进行修改。

副分片的主要作用如下:

  • 提高搜索和并发性能。当搜索文档时,每次都会从主分片和副分片中选择一套完整的分片来组合成一个索引,以供搜索,而且每次搜索请求主副的组合可能不一样;这样当并发搜索很多时,就可以把压力分散在多个节点上,做到负载均衡。
  • 提高容错性和容灾性。当集群中某个节点宕机,该节点上所有分片中的数据全部丢失(既有主分片,又有副分片);丢失的副分片对数据的完整性没有影响,丢失的主分片在其他节点上的副分片就会自动变成主分片;所以整个索引的数据完整性没有被破坏。
segment

段。是Lucene中的倒排索引,是词典term dictionary到文档列表posting list的映射关系。同时为了解决分词之后term过多导致无法全部放入内存的问题,还会在term dictionary上做一层前缀索引term index。

文档构成要素
  • _index 指向一个或者多个物理 分片 的 逻辑命名空间
  • _id 文档的唯一表示

文档写入过程

4c779f7a48018044d3d15c73c7f8a91a

这里面存在三个概念, refresh, flush, translog

refresh过程

在文档被写入到Lucene后, 并不是马上能被搜索,而是通过一个refresh的过程定时将Lucene的buffer数据生成一个segment, 然后刷新到操作系统的文件缓存,此时该文档是可以被搜索到的,因为查询首先会查操作系统缓存。refresh的间隔时间由参数控制,默认1s。

flush过程

在操作系统缓存中的数据虽然能被搜索到,但是并没有持久化。所以会有一个定时任务(默认30分钟), 该任务首先将Lucene中的buffer 刷新到操作系统缓存中的segment, 然后将所有的segment进行持久化。

该过程的另一个触发时机是当translog的大小达到一个设置值(默认512m)。

translog

文档写入之后或者刷新文件系统缓存中后, 此时的数据都是在内存中,只要服务器宕机就会出现数据丢失的问题。为了解决此问题, 引入了translog机制, 在文档写入成功到Lucene之后,然后写入一份到translog。

translog文件要等到segment刷到磁盘,而且commit文件更新的时候,才能清空。

merge过程

由于refresh默认间隔为1s,因此会产生大量的小segment,为此ES会运行一个任务检测当前磁盘中的segment,对符合条件的segment进行合并操作,减少lucene中的segment个数,提高查询速度,降低负载。不仅如此,merge过程也是文档删除和更新操作后,旧的doc真正被删除的时候。用户还可以手动调用_forcemerge API来主动触发merge,以减少集群的segment个数和清理已删除或更新的文档。

参考文章

  1. https://www.elastic.co/guide/cn/elasticsearch/guide/current/_scale_horizontally.html
  2. https://mp.weixin.qq.com/s/25BW6ll9m1KA7hhUUE2PLw
  3. https://elasticsearch.cn/article/13533
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch存储介绍 的相关文章

  • Elasticsearch 单个字段的多个分析器

    我使用严格的预定义映射将不同类型的文档存储在单个索引中 它们都有一些字段 例如 body 但我希望在索引时对它们进行稍微不同的分析 例如 对特定文档使用不同的标记过滤器 并在搜索时以相同的方式处理 据我所知 分析器不能按文档指定 我还考虑使
  • 弹性搜索文档计数

    我正在运行 2 2 版本的 Elastic 搜索 我已经创建了索引并加载了示例文档 我发现其中有些问题 当我给予 GET index type count 我得到了正确的答案 count 9998 shards total 5 succes
  • 如何使用ElasticSearch来实现社交搜索?

    我正在尝试使用 ElasticSearch 创建具有社交功能的商业搜索 我有一个企业目录 用户可以通过不同的方式与这些企业进行交互 通过查看它们 检查它们等 当用户搜索商家时 我希望能够在结果顶部向他们显示他们的朋友与之互动过的商家 或根据
  • NEST 1.0:请参阅 Fiddler 上的请求

    我刚刚更新到 NEST 1 0 我在远程服务器 不是本地主机 上有 Elastic Search 通常我在使用 Fiddler 发送和接收请求时没有任何问题 更新后 bammm 没有检测到任何请求 但我的应用程序发出这些请求没有任何问题 你
  • Elasticsearch:根据类型对不同字段进行排序

    我的索引中有两种类型 Event and City 我正在尝试按日期将它们全部排序 但是 每种类型的日期字段名称都不同 为了Event该值是在updated at领域和City日期是在update at其嵌套对象之一中的字段city eve
  • 即使禁用安全性,OAuth 令牌 API 也无法在 Elastic Search 中工作

    我是 Elastic search 新手 使用 Elastic search 版本 7 7 1 我想通过以下方式生成 OAuth 令牌弹性搜索文档 https www elastic co guide en elasticsearch re
  • 自动完成建议中的输出字段

    当我想在 elasticsearch 中索引文档时 会发生此问题 message MapperParsingException failed to parse nested IllegalArgumentException unknown
  • ElasticSearch - 尝试在 Windows 上启动服务时出错

    昨天 我在 Windows Server 2012 R2 上完成了 ElasticSearch 的安装 并且能够正常启动 ElasticSearch 服务 今天 我安装了 Kibana 和 X Pack 但在尝试启动 ElasticSear
  • Elasticsearch:预期的字段名称,但得到了 START_OBJECT

    我一直在尝试运行以下查询 但每次运行时都会收到以下错误 nested ElasticsearchParseException Expected field name but got START OBJECT field value fact
  • Java ElasticSearch 配置的节点均不可用

    过去一小时刚刚下载并安装了elasticsearch 1 3 2 打开 IPtables 端口 9200 和 9300 9400 在 etc hosts 中设置我的计算机名称和 ip 头部模块和护理人员安装并运行顺利 本地主机上的curl
  • 将 CSV 文件中的数字数据更改为文本

    下面的查询是抓取数据并创建一个 CSV 文件 我遇到的问题是名为 SPLE 的源在数据库中存储数字为 0 1 50 的数据 然而 在 CSV 中 这些数字被收集在 CSV 中 我希望在创建 CSV 时 这些数字能够代表诸如以下的单词 0 T
  • ElasticSearch bool should_not 过滤器

    我是elasticsearch的新手 所以我的问题是 bool 过滤器有 3 个部分 must All of these clauses must match The equivalent of AND must not All of th
  • 如何在没有部署 K8S 的情况下重启 pod?

    我部署了一个弹性搜索 https www elastic co elasticsearch使用此命令在 K8S 上集群helm install elasticsearch elastic elasticsearch 我可以看到 Pod 正在
  • 使用 python 聚合 elasticsearch-dsl 中的字段

    有人可以告诉我如何编写 Python 语句来聚合 求和和计数 有关我的文档的内容吗 SCRIPT from datetime import datetime from elasticsearch dsl import DocType Str
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 如何使用 monolog ElasticSearchHandler 登录 Laravel 应用程序

    Monolog 包含弹性搜索处理程序和格式化程序 但它作为自定义通道对 Laravel 的实现并不像 Laravel 文档网站上描述的那么简单 以下是如何执行此操作的简要分步说明 为您的弹性搜索日志记录创建一个配置文件 config ela
  • 弹性搜索限制类型的结果

    我有以下查询 queryDefinition query gt bool gt must gt query string gt default field gt all query gt term must no
  • Elasticsearch 文档的最大大小是多少?

    我读到有关 Lucene 仅限于 2Gb 文档的注释 对于可在 Elasticsearch 中建立索引的文档大小是否有其他限制 Lucene 内部使用字节缓冲区 该缓冲区使用 32 位整数进行寻址 根据定义 这限制了文档的大小 所以理论上2
  • ElasticSearch:从 Painless 脚本中的嵌套字段计算 arcDistance

    我需要计算 Painless 脚本内的弧距 但在这种情况下还没有找到访问 geo API 的方法 即 第一点作为参数传递给脚本 这意味着我只获得原始值 第二点是从嵌套文档中读取的 这意味着我无法使用doc myGeoField value
  • 在 Elasticsearch php API 中使用多种类型或索引

    我想使用查询多种类型和索引Elasticsearch PHP API 但我不知道怎么办 我应该将类型和索引的数组传递给 params params index index array of indices params type types

随机推荐

  • 大语言模型之一 Attention is all you need ---Transformer

    大语言模型已经在很多领域大显身手 其应用包括只能写作 音乐创作 知识问答 聊天 客服 广告文案 论文 新闻 小说创作 润色 会议 文章摘要等等领域 在商业上模型即产品 服务即产品 插件即产品 任何形态的用户可触及的都可以是产品 商业付费一般
  • jstat -gc pid 查询jvm 状态

    top命令查看相关应用的pid jstat gc 24272 参数说明 S0C 第一个幸存区的大小 S1C 第二个幸存区的大小 S0U 第一个幸存区的使用大小 S1U 第二个幸存区的使用大小 EC 伊甸园区的大小 EU 伊甸园区的使用大小
  • Linux 没有鼠标解决复制粘贴问题

    1 复制粘贴命令 在一行的任何位置按下yy y是yanked拷贝的意思 然后去想粘贴的位置按下p即可 p是粘贴的意思 2 如果想复制3行的话 按下3yy 就复制3行 如果想复制多行的话 直接按数字可以选中多好 然后粘贴 3 剪切和粘贴 把光
  • 【C语言技巧】51单片机打印 printf 格式化字符不正确解决办法

    原文来自keil软件 help 一栏 如下图 printf include
  • Windows防火墙配置脚本讲解

    一 natsh命令 Netsh 是命令行脚本实用工具 它允许从本地或远程显示或修改当前正在运行的计算机的网络配置 Netsh 还提供了一个脚本功能 对于指定计算机 可以通过此功能以批处理模式运行一组命令 为了存档或配置其他服务器 Netsh
  • 爬虫写得好,‘劳烦’吃得饱

    前言 提起 爬虫 总有一丝神秘色彩 大家都调侃 爬虫写得好 劳烦 吃得饱 虽然是 高危职业 但在大数据横行的年代 爬虫与反爬虫的需求却在猛烈增加 他们的关系就像矛与盾 越来越多的公司造 矛 发起攻势 获取数据 又或者在造 盾 封锁信息 这种
  • echarts设置tooltip的宽高问题

    ECharts容器 1 ECharts容器设置宽度width 值可以是百分比或者是像素 当设置为百分比时 要检查父元素是否设置了宽度 注意 容器宽度设置不要用min width 不然会发现tooltip的宽度等于min width设置的宽度
  • flutter 微信支付 跳转小程序 分享到小程序

    flutter 微信支付 跳转小程序 分享到小程序 直接上步骤 第一步 pubspec yaml 添加依赖 fluwx 1 2 1 1 fluwx最新3 0不太好用 第二步 界面添加 import package fluwx fluwx d
  • MMDetection3D/3D目标检测中的边界框和坐标系介绍(含相关函数以及坐标变换的介绍)

    1 准备知识 参考 带你玩转 3D 检测和分割 二 核心组件分析之坐标系和 Box 知乎 1 1 坐标系介绍 激光雷达坐标系通常定义如下左图所示 其中指向前方 指向左方 指向上方 相机坐标系通常定义如上右图所示 其中指向右方 指向下方 指向
  • Logisim状态机的搭建

    有限状态机概述 有限状态机 Finite State Machine FSM 是表示有限个状态以及这些状态之间的转移和动作 输入 之间关系的离散模型 有限状态机是组合逻辑和寄存器逻辑的特殊组合 组合逻辑部分包括次态逻辑和输出逻辑 分别用于状
  • Bugku:Simple_SSTI_1

    很简单的模板注入 直接F12查看提示 flag在secret key下 bugku才是对萌新最友好的平台
  • linux 可执行文件反编译,如何反汇编,修改,然后重新组装一个Linux可执行文件?...

    我不认为有任何可靠的方法来做到这一点 机器码格式非常复杂 比assembly文件更复杂 编译的二进制文件 比如ELF格式文件 并不是真的有可能产生一个源代码汇编程序 它将编译成相同的 或类似的 二进制文件 为了理解差异 将GCC编译直接输出
  • linux命令之cal详解

    linux学习笔记之cal 在所有的类linux操作系统中 cal或者ncal命令会在命令行打印出一个有格式的日历 阳历 默认情况下 即不给定任何参数的情况下 cal和ncal将会输入本月的日历 并突出显示当前的日期 在Ubuntu22 0
  • 游戏王计算机兽,游戏王电脑堺卡牌——法王兽,吸血鬼谢里丹,龙龙,甲甲,凰凰...

    闇卡 真龙皇 法王兽 真龙皇 法 王 兽是真龙卡组的XYZ怪兽 也是真龙皇的boss卡 卡名带有真龙字段 种族为幻龙族 在设定上真龙皇与真龙互相敌对 幻龙族 超量 效果 9星怪兽 2只以上 1回合1次 把这张卡1个超量素材取除 宣言1个属性
  • leetcode55. 跳跃游戏

    给定一个非负整数数组 nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1 输入 nums 2 3 1 1 4 输出 true 解释 可以先跳 1 步 从下标 0
  • BackgroundWorker

    BackgroundWorker的事件响应函数 private void backgroundWorker1 DoWork object sender DoWorkEventArgs e BackgroundWorker worker se
  • VueCLI4.x+Vue2.x 使用postcss-px2rem和lib-flexible解决自适应问题 (解决组件样式被修改失效问题)

    简介 前端页面移动端免不了需要自适应高度宽度字体大小等等 如果直接写rem的话那会很麻烦 前端还需要根据设计图自己去转rem写样式 那样会非常麻烦且不易维护 本文将介绍前端写px像素单位自动转为rem单位 步骤 一 安装组件 npm ins
  • Spring Cloud-09-微服务统统一认证方案 Spring Cloud OAuth2 + JWT

    文章目录 微服务架构下统 认证场景 微服务架构下统 认证思路 OAuth2开放授权协议 标准 OAuth2介绍 OAuth2协议角色和流程 什么情况下需要使用OAuth2 OAuth2的颁发Token授权 式 Spring Cloud OA
  • 综合布线系统6个独立的子系统介绍

    综合布线系统是一个用于传输语音 数据 影像和其他信息的标准结构化布线系统 是建筑物或建筑群的传输网络 它使语言和数据通信设备 交换设备和其他信息管理系统彼此相连接 综合布线的热物理结构一般采用模块化设计和分层星型拓扑结构 系统结构有6个独立
  • ElasticSearch存储介绍

    基本概念介绍 node 节点 一个运行中的 Elasticsearch 实例称为一个节点 而集群是由一个或者多个拥有相同 cluster name 配置的节点组成 它们共同承担数据和负载的压力 当有节点加入集群中或者从集群中移除节点时 集群