互联网教育品牌“道远课堂”完成1000万元A轮融资,由新金创投领投
06-18
1了解ElasticSearch文档写入和检索的原理。 elasticsearch基本概念 节点(Node):物理概念,一个运行的elasticsearch实例,通常是机器上的一个进程,用于存储数据并参与集群索引和搜索。
可以分为以下几种: 专用主节点(Master Node):为了保证集群的稳定性,主节点和数据节点是分开的。主要职责是执行与集群相关的操作,例如创建和删除索引,以及跟踪哪些节点。
是集群的一部分,决定将哪些分片分配给相关节点。在大规模集群中,开启专用Master Node可以增强集群的稳定性。
协调节点:该节点仅处理路由请求、处理搜索、分发索引文件。它相当于一个负载均衡器。
协调器节点将请求分发到存储数据的数据节点。每个Data Node在本地执行请求,并将请求结果返回给Coordinator Node。
协调节点收集数据后,会将每个节点的数据合并为一个全局结果。数据节点:存储索引数据的节点,主要进行文档的增、删、改、聚合等操作。
数据节点对CPU、内存、IO要求较高。在优化过程中,需要监控数据节点的状态。
当资源不足时,需要向集群中添加新的节点。索引:逻辑概念。
索引是具有相同特征的文档的集合(相当于关系数据库),包括配置信息映射和倒排、正向数据文件。索引的数据文件可能分布在一台机器上。
也可以将其分布在多台机器上。类型:类型通常是索引的一个逻辑分区,允许不同类型的文档存储在一个索引下(相当于关系数据库中的一张表)。
在6.x版本中,只允许一个Index包含一种Type。这个概念将在 7.x 之后被删除。
文档:文档是可以索引的基本信息单元(相当于关系数据库中的一行数据)。文档可以用 Json 格式表示。
映射:Schema映射(相当于关系数据库的Schema)用于定义索引结构。 Field:字段是Elasticsearch中的最小单位,相当于数据库中的列,类似于Json中的key。
分片:为了支持更大的数据量,一般将索引按照一定的维度划分为多个部分。每个部分都是一个分片,分片由 Node 管理。
一个Node一般管理多个分片,但为了可靠性和可用性,相同索引的分片应尽可能分布在不同的Node上。分片有两种类型:主分片和副本分片。
分片数量只能在创建索引时指定,创建后无法更改。每个分片的大小建议小于50G,因此在设计分片时,提前预估数据量,设置合适的分片。
Replica:同一个分片(Shard)的备份数据。一个分片可能有 0 个或多个副本。
这些副本中的数据保证强一致性或最终一致性。 2.Elasticsearch集群架构 2.1.分层部署通过配置隔离Master Node和Data Node。
代码语言:javascript copy #主节点配置node.name: masternode.master: truenode.data: false #数据节点配置node.name:node1node. master: falsenode.data: true 分层部署图2.2,混合部署 Master Node也是Data Node,Master Node通过集群选举产生。选举策略discovery.zen.minimum_master_nodes = (master_eligible_nodes / 2) + 1 混合部署 图3、Elasticsearch文档写入原理 3.1、文档写入流程 文档写入流程图 假设选择Node2(DataNode)发送写入Index1的请求指数。
此时Node2可以称为协调节点(Coordinating Node); Coordinaing Node会根据算法(shard id的计算公式:shard_num = hash(_routing) % num_primary_shards,哈希函数为murmur3Hash,_routing默认为文档ID(_id))进行路由,将请求发送到对应的DataNode。假设对应的主分片为P1;请求数据写入进入P1;数据同步到R1;返回数据写入结果。
3.2.文档存储 3.2.1。文档存储结构 每个Elasticsearch shard都是一个Lucene索引(Index)。
每个Lucene包含多个段(segment)。每个段都有多个文档(Documents)和维护。
获得术语与文档ID之间关系的倒排索引(Inverted Index)数据。文档存储结构如下图所示: 文档存储结构图 3.2.2、倒排索引存储 倒排索引存储流程图 从内存缓冲区到磁盘页缓存的过程对应ElasticSearch的refresh() API,即默认每1秒触发一次。
;从磁盘页面缓存到磁盘的过程对应ElasticSearch的flush() API,默认每30分钟触发一次; translog本身从磁盘页缓存到磁盘的持久化是5s一次。 3.2.3.段合并段小文件合并过程图自动刷新过程每秒创建一个新段,每个段消耗文件句柄;小段合并成大段,然后这些大段再合并成更大的段(小于5G);打开新段进行搜索,并删除旧段。
4.Elasticsearch检索原理文档检索流程图。如果选择Node3,则Node3称为协调节点。
协调节点将查询请求广播到各个数据节点,这些数据节点的分片将处理该查询。查询请求。
每个分片进行数据查询,将符合条件的数据放入优先级队列中,并将这些数据的文档ID、节点信息以及分片信息返回给协调节点。协调节点汇总所有结果并进行全局排序。
协调节点向包含这些文档ID的分片发送get请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据返回给客户端。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-17
06-06
06-17
06-17
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用