1 ES基本结构
ES从逻辑结构和物理结构区分:
1.1 ES的逻辑结构
文档是ES索引和搜索的基本单位,文档以类型来分组,类型存在于一个索引中;
- 文档特性
- 自我包含(文档中包含字段和对应的取值);
- 层次型的(字段对应的值可以嵌套);
一篇文档通常是数据的Json表示;文档是无模式的(并非所有的文档都需要拥有相同的字段,每个字段类型可以不同,类型也称为映射类型)
- 类型
类型是文档逻辑容器,在 7.0 以及之后的版本中 Type 被废弃了。一个 index 中只有一个默认的 type,即 _doc; - 索引
索引是映射类型的容器,每个索引有一个refresh_interval的设置,定义了新近索引的文档对于搜索可见的时间间隔;刷新操作的代价是非常昂贵的,默认是每秒更新一次,而不是新来一篇文档就更新一次;
1.2 ES的物理结构
ES的物理结构决定了ES是如何处理数据的,ES将每个索引划分为分片,每个分片可以在集群中的不通服务器间迁移;物理设计的配置方式决定了集群的性能,可扩展性和可用性;
默认情况,每个索引由5个主要分片组成,每个主分片有一个副本,一共10份分片;
通常一个分片是一个目录中的文件,Lucene用这些文件存储索引文件,分片是ES从一个节点迁移到另一个节点的最小单位;
1.3 当索引一篇文档时流程
当前索引一篇文档时,系统首先根据文档的ID的散列值选择一个主分片,并将文档返送该主分片;然后文档被发送到该主分片的所有副本分片进行索引;使得副本分片和主分片直接保持数据的同步;数据同步使得副本分片可以服务于搜索请求,并将原有的主分片无法访问时自动升级为主分片;
1.4 搜索索引流程
当搜索一个索引是,ES需要在该索引得完整分片集合中进行查找,这些分片可以是主分片,也可以是副本分片,原因对应的主分片和副本分片通常包含一样的文档,ES在索引的主分片和副本分片中进行搜索请求的负载均衡,使得副本分片对于搜索性能和容错都有所帮助;
网友评论