<返回更多

一文轻松图解搞懂Elasticsearch原理!

2022-12-26     IT架构师联盟
加入收藏

官方网站 www.itilzj.com 文档资料: wenku.itilzj.com

ES 的集群模式和 kafka 很像,kafka 又和 redis 的集群模式很像。总之就是相互借鉴!

不管你用没用过 ES,今天我们一起聊聊它。就当扩展大家的知识广度了!

认识倒排索引

「正排索引 VS 倒排索引:」

正排索引 VS 倒排索引

「倒排索引包括两个部分:」

 

 

倒排索引

ElasticSearch的倒排索引:」

 

 

分布式架构原理

「分片shard:一个索引可以拆分成多个shard分片。」

 

 

ES集群部署在 3个 机器上(esnode1esnode2esnode3):

「创建个索引,分片为 3 个,副本数设置为 1:」

PUT /sku_index/_settings
{
"settings": {
"number_of_shards" : 3,
"number_of_replicas": 1
}
}

响应:
{
"acknowledged" : true
}

分布式架构原理

ES集群中有多个节点,会自动选举一个节点为master节点,如上图的esnode2节点:」

 

 

「集群中某节点宕机:」

 

 

写入数据的工作原理

「写单个文档所需的步骤:」

 

  1.  

     

    客户端选择一个Node发送请求,那么这个Node就称为「协调节点(Coorinating Node)」

     

  2.  

     

    Node使用文档ID来确定文档属于分片 0,通过集群状态中的内容路由表信息获知分片0 的主分片在Node1上,因此将请求转发到Node1上。

     

  3.  

     

    Node1上的主分片执行写操作。如果写入成功,则将请求并行转发到Node3的副分片上,等待返回结果。

    当所有的副分片都报告成功,Node1将向Node(协调节点)报告成功。

     

 

写入数据的工作原理

Tips:客户端收到成功响应时,意味着写操作已经在主分片和所有副分片都执行完成。」

写数据底层原理

写数据底层原理

「写操作可分为 3 个主要操作:」

 

  1.  

     

    **写入新文档:**这时候搜索,是搜索不到。

     

 

**refresh操作:**默认每隔 1s ,将内存中的文档写入文件系统缓存(filesystem cache)构成一个segment

 

❝ 这时候搜索,可以搜索到数据。 ❞
 

 

**flush操作:**默认每隔 30 分钟 或者translog文件512MB,将文件系统缓存中的segment写入磁盘,并将translog删除。

translog文件:」来记录两次flush(fsync) 之间所有的操作,当机器从故障中恢复或者重启,可以根据此还原

 

 

读取数据的工作原理

「读取文档所需的步骤:」

 

  1.  

    客户端选择一个Node发送请求,那么这个Node就称为「协调节点(Coorinating Node)」

     

  2.  

    Node使用文档ID来确定文档属于分片 0,通过集群状态中的内容路由表信息获知分片0 有 2 个副本数据(一主一副),会使用随机轮询算法选择出一个分片,这里将请求转发到Node1

     

  3.  

    Node1将文档返回给NodeNode将文档返回给客户端。

     

 

读取数据的工作原理

「在读取时,文档可能已经存在于主分片上,但还没有复制到副分片,这种情况下:」

 

 

搜索工作原理

「搜索数据过程:」

 

  1.  

    客户端选择一个Node发送请求,那么这个Node就称为「协调节点(Coorinating Node)」

     

  2.  

    Node协调节点将搜索请求转发到所有的 分片(shard):主分片 或 副分片,都可以。

     

  3.  

    query阶段」:每个分片shard将自己的搜索结果(文档ID)返回给协调节点,由协调节点进行数据的合并、排序、分页等操作,产出最终结果。

     

  4.  

    fetch阶段」:由协调节点根据 文档ID去各个节点上拉取实际的文档数据。

     

 

搜索工作原理

**举个栗子:**有 3 个分片,查询返回前 10 个匹配度最高的文档

 

  1.  

    每个分片都查询出当前分片的TOP 10数据

     

  2.  

    「协调节点」3 * 10 = 30的结果再次排序,返回最终TOP 10的结果。

     

 

删除/更新数据底层原理

 

 

「底层逻辑是:」

 

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>