Py学习  »  Elasticsearch

Elasticsearch线上搜索引擎读写内核原理深度认知-搜索系统线上实战

秦凯新的技术社区 • 5 年前 • 407 次点击  
阅读 41

Elasticsearch线上搜索引擎读写内核原理深度认知-搜索系统线上实战

本套技术专栏是作者(秦凯新)平时工作的总结和升华,并深度整理大量网上资源和专业书籍。通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。

1 ES 分布式架构设计

elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。

es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在es中创建一个索引,order_idx,所有的订单数据就都写到这个索引里面去,一个索引差不多就是相当于是mysql里的一张表。

-> index(mysql里的一张表)
-> type(一个index里可以有多个type,每个type的字段都是差不多的,但是有一些略微的差别。
         比如在订单index里,建两个type,一个是实物商品订单type,一个是虚拟商品订单type,
         这两个type大部分字段是一样的,少部分字段是不一样的) 
-> mapping (mapping就是这个type的表结构定义)
-> document (一条document就代表了mysql中某个表里的一行,每个document有多个field,每个field就代表了这个document中的一个字段的值)
-> field(具体索引字段)
复制代码

  • 设计一个索引,这个索引可以拆分成多个shard,每个shard存储部分数据。
  • 每一个shard的数据实际是有多个备份,每个shard都有一个primaryshard,负责写入数据,但是还有几个replica shard。primary shard写入数据之后,会将数据同步到其他几个replica shard上去。
  • es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据拉,负责切换primary shard和replica shard身份等。
  • 如果master节点宕机了,那么会重新选举一个节点为master节点。
  • 如果是非master节点宕机了,那么会由master节点让那个宕机节点上的primary shard的身份转移到其他机器上的replica shard。

2 ES 写数据过程深入剖析

2.1 ES 写数据总体流程

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

2.2 ES 写数据内核原理剖析

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/29421
 
407 次点击