Elastic Serch 进阶版问题

ElasticSearch是一款强大的开源搜索引擎,基于Lucene,擅长于快速检索海量数据。它使用倒排序索引提高查询效率,并通过集群实现数据冗余和高可用性。数据写入时,先存储在OSCache,再定期同步到Translog,确保几乎无数据丢失。删除操作通过.del文件标记,后续合并操作会移除这些记录。查询时,协调节点通过documentID进行负载均衡,检索时使用广播机制并内存排序处理结果。
摘要由CSDN通过智能技术生成

Elastic Serch

  1. 什么是elasticSerch?
    elasticSerch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据快速找到需要的内容。
    在数据库的索引失效的情况下和海量数据查询时,使用elasticserch

  2. 什么是elk
    elk 结合kibana 。 Logstash,Beats,也就是elastic Stack(ELK)。被广泛应用在日志数据分析,实时监控等领域

  3. elasticSerch的底层是Lucene


1.倒排序索引法?
文档:一条数据就是一个文档
词条(term):文档按照予以分成的词语
es的索引:相同类型的文档集合
映射:索引中文文档的字段约束信息,类似表的结构约束

先准备一个索引空间(以空间换时间)
将查询条件分词然后进行等值匹配得到的id再显示出来

在这里插入图片描述

在这里插入图片描述

2.如何在项目中使用线程池?当有一个非常大的任务,我们把这个任务拆分为多个小任务,线程池里面的线程去执行每个拆分出来的小任务。


es的集群原理

在这里插入图片描述

在客户端是会配置集群的ip与port,经过ip/port转发到es服务器上,接收转发的服务器是协调服务器,协调服务器也会根据ip/port转发到相应要查找数据的子服务器上。但是查的数据可能也不止在一个子服务器上,而且子服务器可能会挂掉假设子服务器es-01会挂掉,就会通过自己的shrad primary数据节点进行向其他服务器发起数据同步,将自己的的数据备份到假设为es-03的服务器上备份数据为shard replica 经过备份后es-03会向协es-01发起通知说明已备份完成,再es-01向调服务器es-02返回信息,然后协调服务器再将查询到的数据返回给客户端。

补充:

  1. es服务集群下的master角色:
    该角色与与协调节点服务器没有任何关系,但他也可以是协调服务器。如果在集群里面有服务器挂了的话,假设还是es-01挂了,他会把上述es-03备份的es-01的replica节点数据提升为shard primary 节点。该master角色的作用与Redis集群的master的作用相似。
  2. 分片备份:
    多台服务器备份不是自己的数据,备份的primary为replica,备份的数据要保存数据同步。

es的写入,查询。检索

在这里插入图片描述

写入问题:

es会先去os cache中去找要查的数据。es就能收到这个数据。 es准时的同步(几乎)只需要1s,对于左侧的os 同步数据持久化,做的是随机写入,到时候读的话就是随机读,虽然写的块但是读的慢,性能消耗极大。几乎不会丢数据。

但是如果把os cache中的数据每5min传入到translog的操作日志中去,当translog每30min或者translog写满了就会做数据数据持久化操作,触发commit 再写到磁盘里面。translog是记录操作数据的日志,日志的数据一般不会丢,但是从cache 传过来的数据可能会丢失(5min数据)
在commit之后,document文件会生成为segement file文件,持久存储在磁盘里面。segement file是用于存放真实数据的位置。

补充:

  1. 磁盘的顺序写于顺序读问题:
    在这里插入图片描述

磁道(track):磁道是单个盘面上的同心圆,当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道,一个盘面上的磁道可以有成千上万个。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会产生相互影响,同时也为磁头的读写带来困难。

扇区(sector):磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区(Sector)。硬盘的第一个扇区,叫做引导扇区。扇区是被间隙(gap)分割的圆的片段,间隙未被磁化成0或者1。注意,扇区是读写磁盘最基本的单位,如果一个扇区因为某种原因被破坏,那么整个扇区的数据都会受影响。

读取的数据是在磁盘的扇区上
如果不是相邻扇区进行读写操作叫做随机读写,性能十分差,如果读取的数据在相邻的扇区,那么磁盘的性能较高,读写就是顺序读写。

es的删除操作

es中维护了一个.del文件,要删除的时候,客户端会直接访问这个文件,而不去管segement file 是否真的删除了,.del文件有类似于定时任务的机制,到点就删,而且segement file有一个临界条件,如果达到了这个临界条件,segement file会去执行merge操作,合成一个新的大的segement file中没有这些被删除的的记录,丢失会向.del文件查询。

es的查询与检索

  1. 查询原理 :可以理解为,es作为海量数据的搜索引擎,如何减轻es的访问压力,在es看来是十分重要的:

读数据时,会找到任意一台协调节点,会根据documentID进行hash运算,会算出来所有的primary和replica节点,然后就会把这些节点拿去做负载均衡,读取对于的数据,把数据返回给协调节点,然后再传到客户端。

  1. 检索原理:es不知道你要去搜索的东西是在primary或者replica节点,此时协调节点就会去向所有shard 发起广播,问那个shard维护的倒排序索引有对应词条的documentID,此时并不会把documentID对应的文档直接发给协调节点的服务器,而是会在内存里面进行排序分页等操作,处理完成后再根据处理好的顺序documentID到对应的shard上去拿真实数据给客户端。

es的深度分页问题

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值