【ES】1. Elastic系统知识

2021-05-30  本文已影响0人  河神

核心概念

image.png

Node - 节点

Cluster - 集群

image.png

Shards - 分片

Replicas - 副本 备份

Index - 索引

Mapping - 映射

Settings - 配置

Analyzer - 分词

Type - 类型 (6.2中只能包含1个type ,7移除了 type的概念)

为什么要移除Type呢?

Document - 文档


Elasticsearch的架构设计

服务发现以及选主

分片和路由

数据写入过程

1. 分段存储

2. 延迟写策略

索引写入磁盘的过程是异步的

基本方式
  1. 新文档被索引之后,先被写入内存中。为了防止数据丢失,Elasticsearch会追加一份数据到事务日志中。此时的新数据还不能被检索和查询。

  2. 当达到默认的刷新时间或内存中的数据达到一定量后,Elasticsearch会触发一次刷新,将内存中的数据以一个新段形式刷新到文件缓存系统中并清空内存。这时新段虽未被提交到磁盘,但已经可以对外提供文档的检索功能且不被修改。

  3. 随着新文档索引不断被写入,当日志数据大小超过某个值(如512MB),或者超过一定时间(如30 min)时,Elasticsearch会触发一次Flush,提交到硬盘。

  4. 生成提交点。日志文件被删除,创建一个空的新日志。

  5. 新文档先被放入内存中,此时数据不能被检索

image.png
  1. 默认刷新时间(1秒钟)到达,或者数据到达一定量的时候,会把内存中的数据创建一个新的段,此时数据可以被检索,但是此时数据还在内存。
image.png
  1. translog太大,或者默认flush时间(30分钟),进行flush。段数据被提交到硬盘当中,并且 translog 被清空
image.png

3. 段合并

WAL技术

Here is yuque doc card, click on the link to view:https://www.yuque.com/go/doc/42404465

主副分片数据一致性

自动管理索引生命周期(ILM)

image.png

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">PUT _ilm/policy/full_policy { "policy": { "phases": { "hot": { "actions": { "rollover": { "max_age": "7d", "max_size": "50G" }//当数量到达500g,或者存储时间超过7天的时候,就会进行滚动存储 } }, "warm": { "min_age": "30d",//进入这个阶段的条件 "actions": { "forcemerge": { "max_num_segments": 1 //强行合并分段 }, "shrink": { "number_of_shards": 1 //分片缩减到1个 }, "allocate": { "number_of_replicas": 2 //增加两个副本 } } }, "cold": { "min_age": "60d",//进入冷阶段条件 "actions": { "allocate": { "require": {//将索引分配给 冷数据节点 "type": "cold" } } } }, "delete": { "min_age": "90d",//进行删除的条件 "actions": { "delete": {}//删除索引 } } } } }</pre>

上一篇 下一篇

猜你喜欢

热点阅读