ElasticSearch存储介绍

基本概念介绍

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值