ElasticSearch底层读写工作原理

这篇具有很好参考价值的文章主要介绍了ElasticSearch底层读写工作原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

ES底层读写工作原理分析

ES写入数据的过程

ES读取数据的过程

根据id查询数据的过程

根据关键词查询数据的过程

写数据底层原理


ES底层读写工作原理分析

         写请求是写入 primary shard,然后同步给所有的 replica shard;读请求可以从 primary shard 或 replica shard 读取,采用的是随机轮询算法。

ES写入数据的过程

1. 客户端选择一个node发送请求过去,这个node就是coordinating node (协调节点)。

2. coordinating node,对document进行路由,将请求转发给对应的node。

3. node上的primary shard处理请求,然后将数据同步到replica node。

4. coordinating node如果发现primary node和所有的replica node都搞定之后,就会返回请求到客户端。

    ElasticSearch底层读写工作原理,分布式中间件,elasticsearch,大数据,搜索引擎,后端,全文检索

ES读取数据的过程

根据id查询数据的过程

       根据 doc id 进行 hash,判断出来当时把 doc id 分配到了哪个 shard 上面去,从那个 shard 去查询。

1. 客户端发送请求到任意一个 node,成为 coordinate node 。

2. coordinate node 对 doc id 进行哈希路由(hash(_id)%shards_size),将请求转发到对应的 node,此时会使用 round-robin 随机轮询算法,在 primary shard 以及其所有 replica 中随机选择一个,让读请求负载均衡。

3. 接收请求的 node 返回 document 给 coordinate node 。

4. coordinate node 返回 document 给客户端。

根据关键词查询数据的过程

1. 客户端发送请求到一个 coordinate node。

2. 协调节点将搜索请求转发到所有的 shard 对应的 primary shard 或 replica shard ,都可以。

3. query phase:每个 shard 将自己的搜索结果返回给协调节点,由协调节点进行数据的合并、排序、分页等操作,产出最终结果。

4. fetch phase:接着由协调节点根据 doc id 去各个节点上拉取实际的 document 数据,最终返回给客户端。

写数据底层原理

核心概念

segment file

       存储倒排索引的文件,每个segment本质上就是一个倒排索引,每秒都会生成一个segment文件,当文件过多时es会自动进行segment merge(合并文件),合并时会同时将已经标注删除的文档物理删除。

commit point

        记录当前所有可用的segment,每个commit point都会维护一个.del文件,即每个.del文件都有一个commit point文件(es删除数据本质是不属于物理删除),当es做删改操作时首先会在.del文件中声明某个document已经被删除,文件内记录了在某个segment内某个文档已经被删除,当查询请求过来时在segment中被删除的文件是能够查出来的,但是当返回结果时会根据commit point维护的那个.del文件把已经删除的文档过滤掉

translog日志文件

       为了防止elasticsearch宕机造成数据丢失保证可靠存储,es会将每次写入数据同时写到translog日志中。

os cache

       操作系统里面,磁盘文件其实都有一个东西,叫做os cache,操作系统缓存,就是说数据写入磁盘文件之前,会先进入os cache,先进入操作系统级别的一个内存缓存中去。

Refresh

将文档先保存在Index buffer中,以refresh_interval为间隔时间,定期清空buffer,生成 segment,借助文件系统缓存的特性,先将segment放在文件系统缓存中,并开放查询,以提升搜索的实时性

Translog

       Segment没有写入磁盘,即便发生了宕机,重启后,数据也能恢复,从ES6.0开始默认配置是每次请求都会落盘

Flush

删除旧的translog 文件。

生成Segment并写入磁盘│更新commit point并写入磁盘。ES自动完成。

 ElasticSearch底层读写工作原理,分布式中间件,elasticsearch,大数据,搜索引擎,后端,全文检索文章来源地址https://www.toymoban.com/news/detail-834430.html

到了这里,关于ElasticSearch底层读写工作原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch分布式一致性原理剖析(一)-节点篇

    “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行详细的剖析,介绍其实现方式、原理以及其存在的问题等(基于6.2版本)。 ES目前是最流行的分布式搜索引擎系统,其使用Lucene作为单机存储引擎并提供强大的搜索查询能力。学习其搜索原理,则

    2024年01月24日
    浏览(72)
  • Elasticsearch分布式一致性原理剖析(二)-Meta篇

    Elasticsearch分布式一致性原理剖析(二)-Meta篇 - 知乎 本文首发于云栖社区(Elasticsearch分布式一致性原理剖析(二)-Meta篇-博客-云栖社区-阿里云 ),由原作者转载。 “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行详细的剖析,介绍其实现方式、原

    2024年01月24日
    浏览(65)
  • Elasticsearch分布式一致性原理剖析(三)-Data篇

    本文首发于云栖社区( Elasticsearch分布式一致性原理剖析(三)-Data篇-博客-云栖社区-阿里云 ),由原作者转载。 “Elasticsearch分布式一致性原理剖析”系列将会对Elasticsearch的分布式一致性原理进行详细的剖析,介绍其实现方式、原理以及其存在的问题等(基于6.2版本)。前两篇文章

    2024年01月24日
    浏览(47)
  • 华为荣耀路由器怎么样?首创分布式Wi-Fi工作原理解析

    米路由有mini版,华为的荣耀路由也有应对。日前,华为发布了继“立方”后的又一款荣耀路由新品,至于型号,就叫“荣耀路由”,较真的话你可以找WS831,目前只有白颜色。今天,华为商城和JD已同步上架开卖,和此前宣传的一样,188元。 说到华为这款路由新品,小编想说

    2024年02月08日
    浏览(41)
  • ElasticSearch 底层读写原理

    ​ 写请求是写入 primary shard,然后同步给所有的 replica shard;读请求可以从 primary shard 或 replica shard 读取,采用的是随机轮询算法。 1.选择任意一个DataNode发送请求,例如:node2。此时,node2就成为一个coordinating node(协调节点) 2.计算得到文档要写入的分片 shard = hash(routing)

    2024年04月12日
    浏览(38)
  • spring boot 实现Redisson分布式锁及其读写锁

    分布式锁,就是控制分布式系统中不同进程共同访问同一共享资源的一种锁的实现。 1、引入依赖 2、配置文件 3、配置类 4、测试代码 5、理解 一、时间设置 默认 lock() 小结 lock.lock (); (1)默认指定锁时间为30s(看门狗时间) (2)锁的自动续期:若是业务超长,运行期间自

    2024年02月12日
    浏览(37)
  • 从底层结构开始学习FPGA(6)----分布式RAM(DRAM,Distributed RAM)

    文章目录 系列目录与传送门 一、什么是RAM?什么是ROM? 二、块RAM和分布式RAM 2.1、BRAM

    2024年02月02日
    浏览(39)
  • 第100讲:MHA+Atlas实现MySQL主从复制读写分离分布式集群

    Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来

    2024年02月21日
    浏览(54)
  • 分布式锁原理与实战三:ZooKeeper分布式锁的原理

             目录 ZooKeeper分布式锁的原理 ZooKeeper的每一个节点,都是一个天然的顺序发号器。 ZooKeeper节点的递增有序性,可以确保锁的公平 ZooKeeper的节点监听机制,可以保障占有锁的传递有序而且高效 ZooKeeper的节点监听机制,能避免羊群效应 分布式锁的抢占过程 客户端

    2024年02月08日
    浏览(43)
  • Elasticsearch分布式搜索

    目录 实用篇-ES-环境搭建 1. 什么是elasticsearch ​2. 倒排索引 3. elasticsearch对比mysql ​4. 安装elasticsearch 5. 安装kibana 6. 安装IK分词器 7. IK分词器的词典扩展和停用 实用篇-ES-DSL操作文档 1. mapping属性 2. 创建索引库 3. 查询、修改、删除索引库 4. 新增、查询、删除文档 5. 修改文档 实

    2024年04月22日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包