ElasticSearch相关概念

Elasticsearch

Elasticsearch(ES)是一个分布式、RESTful风格的搜索和数据分析引擎。我们可以基于ES快速构建出自己的搜索服务。目前很多互联网公司都在使用,如:携程、滴滴、小米、饿了么等等。

下面着重介绍ES比较重要的几个概念:

查询相关语法请参考文末

节点

在这里插入图片描述

许多节点构成了ES高可用的集群能力。那么,什么是节点呢?

节点(Node),就是一个 Elasticsearch 应用实例。就类似于我们的Java进程,不巧的是ES也是Java写的,你可以理解为一个节点就是一个Java进程。所以类似 Spring 应用一样,一台服务器或者本机可以运行多个节点,只要对应的端口不同即可。但生产服务器中,一般一台服务器运行一个 Elasticsearch 节点。

角色

在这里插入图片描述

ES中每个节点都有对应的角色:

  1. Master Node:主节点,该节点不和应用创建连接,每个节点都保存了集群状态,master节点不占用磁盘IO和CPU,内存使用量一般。

  2. Master eligible nodes:合格节点,每个节点部署后不修改配置信息,默认就是一个 eligible 节点,该节点可以参加选主流程,成为Master节点。该节点也保存了集群节点的状态。eligible节点比Master节点更节省资源,因为它还未成为 Master 节点,只是有资格成功Master节点。

  3. Data Node:数据节点,该节点和索引应用创建连接、接收索引请求,该节点真正存储数据,ES集群的性能取决于该节点的个数(每个节点最优配置的情况下),data节点会占用大量的CPU、IO和内存。

  4. Coordinating Node:协调节点,该节点和检索应用创建连接、接受检索请求,但其本身不负责存储数据,可当负责均衡节点,该节点不占用io、cpu和内存。

  5. Ingest Node:ingest 节点可以看作是数据前置处理转换的节点,支持 pipeline管道 设置,可以使用 ingest 对数据进行过滤、转换等操作,类似于 logstash 中 filter 的作用,功能相当强大。

各节点间的关系

  1. Master Node:master节点控制整个集群的元数据。只有Master Node节点可以修改节点状态信息及元数据(metadata)的处理,比如索引的新增、删除、分片路由分配、所有索引和相关 Mapping 、Setting 配置等等。

  2. Master eligible nodes:有资格成为Master节点但暂时并不是Master的节点被称为 eligible 节点,该节点只是与集群保持心跳,判断Master是否存活,如果Master故障则参加新一轮的Master选举。

  3. Data Node:data节点的分片执行查询语句获得查询结果后将结果反馈给Coordinating节点,在查询的过程中非常消耗硬件资源,如果在分片配置及优化没做好的情况下,进行一次查询非常缓慢(硬件配置也要跟上数据量)。

  4. Coordinating Node:协调节点接受客户端搜索请求后将请求转发到与查询条件相关的多个data节点的分片上,然后多个data节点的分片执行查询语句或者查询结果再返回给协调节点,协调节点把各个data节点的返回结果进行整合、排序等一系列操作后再将最终结果返回给用户请求。

  5. Ingest Node:Ingest节点处理时机——在数据被索引之前,通过预定义好的处理管道对数据进行预处理。默认情况下,所有节点都启用Ingest,因此任何节点都可以处理Ingest任务。我们也可以创建专用的Ingest节点。

分片

在这里插入图片描述

主分片

主分片可以理解为我们平时业务当中的分表操作,创建索引的时候需要指定创建的分片数量,每个索引可以对应N个主分片。需要注意的是主分片在创建索引的时候指定,后期无法修改。

副本分片

副本分片是主分片的拷贝,每个主分片可以对应多个副本分片,副本分片在后期可以随意的增加或减少。合理创建副本分片可以提升系统的查询能力。

主副分片关系

ES提供了高可用的分布式集群能力,如果某个节点挂掉不影响系统的正常使用,主副分片设计给高可用提供了很好的支持。
看上图,3个节点当中如果挂掉任意的1个节点,也不会影响系统正常服务。

ES写数据流程

客户端选择一个 node 发送请求过去,这个 node 就是 coordinating node (协调节点)。
coordinating node 对 document 进行路由,将请求转发给对应的 node(有 primary shard)。
实际的 node 上的 primary shard 处理请求,然后将数据同步到 replica node 。
coordinating node 如果发现 primary node 和所有 replica node 都搞定之后,就返回响应结果给客户端。

在这里插入图片描述

ES读数据流程

可以通过 doc id 来查询,会根据 doc id 进行 hash,判断出来当时把 doc id 分配到了哪个 shard 上面去,从那个 shard 去查询。

客户端发送请求到任意一个 node,成为 coordinate node 。
coordinate node 对 doc id 进行哈希路由,将请求转发到对应的 node,此时会使用 round-robin 随机轮询算法,在 primary shard 以及其所有 replica 中随机选择一个,让读请求负载均衡。
接收请求的 node 返回 document 给 coordinate node 。
coordinate node 返回 document 给客户端。

在这里插入图片描述

Elastic 认证

在这里插入图片描述

Elastic公司提供了3种类型认证证书(具体参考文末),考试形式为上机实操,费用大概400美刀。该证书还是有一定含金量的,感兴趣的老铁可以试一试,说不定就是未来的一块敲门砖。
在这里插入图片描述

参考及学习资料:

关于Elastic认证:
https://elasticstack.blog.csdn.net/article/details/109314131
ES查询工作原理:
https://mp.weixin.qq.com/s/j2nvs240rp7JKZT39DPM1Q
ES倒排索引结构:
https://www.cnblogs.com/cjsblog/p/10327673.html
ES分片:
https://mp.weixin.qq.com/s/rlzeOgQpAbIftEa4pfBBrw
ES与MySQL对应关系表:
https://www.cnblogs.com/sanduzxcvbnm/p/12876227.html
ES查询语法:
https://www.cnblogs.com/cjsblog/p/10120470.html
ES学习宝藏:
https://elasticstack.blog.csdn.net/article/details/102728604

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值