首页 > 其他分享 >Elasticsearch 涉及的主要底层原理详解

Elasticsearch 涉及的主要底层原理详解

时间:2024-03-24 22:22:17浏览次数:23  
标签:cache 索引 详解 文档 Elasticsearch disk segment 集群 底层

目录

如果你只是会用 Elasticsearch 而不了解它的运行机制,不是一个合格开发工程师。

作为一名开发工程师,在掌握一项中间件的使用的同时,应该同时掌握该中间件的基本原理,不要求源码层面,但应该知道那些重要的机制,这样在项目的性能优化方面,你才不会无所适从。

这里涉及的底层原理主要涉及到:

  • 单个文档的查询
  • 按条件的查询
  • 文档写
  • 文档删除与更新
  • 集群原理-组建集群,集群选主,集群读写
  • 倒排索引原理

涉及到的概念:

  • refresh,是指文档从buffer中写入file cache的过程
  • file cache,只有当文档写入了file cache,文档就处于可搜索的状态
  • memory buffer,es写入文档时,先写入内存缓冲
  • segment,es的数据存于段中,分为cache segment和disk segment,其中segment包含doc,segment是不可再写的,但是可以合并
  • commit point,提交点,当清空buffer后,cache中的segment刷入了disk中,此时就有commit point
  • translog,一种类似事务机制,写cache同时就记录在内存的translog,5s刷新一次到disk translog,当segment刷到disk时,disk的translog也就可以删除了
  • fsync,落盘的操作
  • .del,文档删除或更新时,文档不是直接物理删除,而是先记录在.del文件中,只是搜索时通过该文件过滤不返回.del文件的内部doc,在段合并的时候才会通过.del真正删除doc数据
  • index,索引,索引下时文档的集合
  • mapping,可以看做数据库数据表的定义结构,规定了哪些字段什么类型
  • setting,设置,定义了分片与副本数,refresh时间等
  • template,主要包含mapping和setting设置
  • ilm,索引生命周期管理,通过ilm实现数据的不同状态的自动化管理,只要定义了ilm,索引就会进行相应滚动

原理篇

1.倒排索引原理

2.文档写

3.单个文档查询

4.多个文档查询

5.文档删除与更新

6.集群组建

7.集群选主

8.集群数据读写

标签:cache,索引,详解,文档,Elasticsearch,disk,segment,集群,底层
From: https://www.cnblogs.com/davis12/p/18093216

相关文章

  • MVC设计模式的详解及应用
    文章目录一、MVC是什么二、MVC的优点三、MVC的应用领域一、MVC是什么MVC全名是ModelViewController,是一种软件设计典范,也是一个框架模式。它将应用程序分成三个核心部件:模型(Model)、视图(View)和控制器(Controller)。每个部件都有自己的任务和责任。模型(M......
  • 软件工程与实践(第四版 新形态)第3章习题答案详解
    第三章一、填空题二、选择题三、简答题四、实践题一、填空题(1)方法或服务(2)类对象(3)类对象继承消息通信二、选择题(1)B(2)C(3)C(4)B(5)D三、简答题(1)什么叫面向对象?面向对象方法OOM的特点是什么?为什么用OOM开发软件?面向对象是一种软件开发方法,它将数据和操作数据的......
  • 详解rtklib中main函数如何配置文件(下)
    目录一、main函数流程总结二、分析识别-k后如何配置三、最后传参的数据文件处理方式 一、main函数流程总结详解rtklib中main函数如何配置文件(上)-CSDN博客在这片文章中讲解了rtklib中main函数的整个流程。(1)通过两种方法给main函数传递参数,并放在argv这个指针数组......
  • ELK学习记录 - elasticsearch 7.9.1安装
    说明:以7.9.1版本为例,运行环境RockyLinuxrelease9.3elasticsearch下载:https://mirrors.huaweicloud.com/elasticsearch/7.9.1/elasticsearch-7.9.1-linux-x86_64.tar.gz解压:$tar-xfelasticsearch-7.9.1-linux-x86_64.tar.gz修改配置文件:$cdelasticsearch-7.9.1/$vi......
  • Java序列化之Jackson详解
    目录1Jackson1.1Jackson简介1.2为什么选择Jackson1.3Jackson的基本功能1.3.1将Java对象转换为JSON字符串(序列化)1.3.2将JSON字符串转换为Java对象(反序列化)1.4Jackson库主要方法1.5使用Jackson基本步骤1.5.1添加依赖(Maven或Gradle)1.5.2创建Java对象模型1.5.3使用ObjectMa......
  • docker推拉时的数据交换详解
    前言docker用了这么久了,有没有想过,在执行dockerpush和dockerpull命令的时候,数据是如何传递的呢?换句话说,如果要实现一个镜像仓库,针对推拉的服务,如何实现接口呢?根据OCI分发规范文档的描述,已经对整个推拉过程中要调用的接口有描述了.但是,纸上学来终觉浅,......
  • Day25 迭代器之Iterator底层
    Day25迭代器之Iterator底层一、迭代器1、概念:迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口,它提供了统一的方式来访问集合中的元素,而不暴露集合的内部结构。通过迭代器,我们可以依次访问集合中的每个元素,进行遍历和操作。2、使用步骤:获取集合的迭代器:Iterat......
  • HashMap的底层设计
    底层数据结构在jdk1.7及它之前是数组+链表;在jdk1.8极其之后,是数组+(链表|红黑树)jdk1.8数组索引计算staticfinalinthash(Objectkey){inth;return(key==null)?0:(h=key.hashCode())^(h>>>16);}而索引值等于hash值和数组长度减一作与运......
  • Redis 哨兵是什么?哨兵配置详解
    Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,Redis从2.8开始正式提供了RedisSentinel(哨兵)架构来解决这个问题。RedisSentinel是一个分布式架构,其中包含若干个Sentinel节点和Redis数据节点,......
  • objective-c之Class底层结构探索
    isa走位图在讲OC->Class底层类结构之前,先看下下面这张图:通过isa走位图得出的结论是:1,类,父类,元类都包含了isa,superclass2,对象isa指向类对象,类对象的isa指向了元类,元类的isa指向了根元类,根元类isa指向自己3,类的superclass指向父类,父类的superclass指向的根类,根......