一、ES 分布式架构原理
ES
设计的理念是分布式搜索引擎,底层实现基于Lucene
,核心思想是在多台机器上启动多个ES
进程实例,组成一个ES
集群。
概念描述
- 接近实时:
ES
是一个接近实时的搜索平台,这就意味着,从存入一个文档直到文档能够被搜索到有一个轻微的延迟
- 集群(cluster):一个集群由多个节点(服务器)组成,所有节点一起保存全部数据,每一个集群有一个唯一的名称标识
- 节点(node):一个节点是一个单一的服务器,是集群的一部分,它存储数据并且参与集群的搜索功能,一个节点可以通过配置特定的名称来加入特定的集群,在一个集群中,你想启动多少个节点就可以启动多少个节点
- 索引(index) :一个索引是含有某些共有特性的文档的集合,一个索引被一个名称唯一的标识,通过这个名称去文档中进行搜索、更新和删除操作
- 类型(type):一个
index
里可以有多个type
,一个type
就相当于数据库中的一张表(type
在6.0.0
版本已经不赞成使用)
- 文档(document) :一个文档是一个基本的搜索单元
- 做个小总结:
ES
中存储数据的基本单位是索引,比如说ES
中存储了一些订单系统的销售数据,就应该在ES
中创建一个索引order_index
,所有的销售数据都会写到这个索引里面去,一个索引就像一个数据库,而type
就相当于库里的表,一个index
里面可以有多个type
,而mapping
就相当于表的结构定义,定义了字段的类型等,往index
的一个type
里添加一行数据,这行数据就叫做一个document
,每个document
有多个filed
,每一个filed
就代表这个document
的一个字段的值。
- 分片(shards):在一个搜索引擎里存储的数据,潜在的情况下可能会超过单个节点的硬件存储限制,为了解决这个问题,
ES
便提供了分片的功能,它可以将索引划分为多个分片,当创建一个索引的时候,可以简单的定义你想要的分片的数量,每一个分片本身是一个