目录

1、逻辑设计

1)文档(通常用JSON数据表示)

2)类型

3)索引

2、物理设计

1)节点

2)分片(主分片、副本分片)

3)ES集群中分片的分布


从逻辑概念和物理设计两个层面理解ES

1、逻辑设计

1)文档(通常用JSON数据表示)

ES中索引和搜索数据的最小单位是文档,文档具有下述几个重要的特性:

  • 自包含的:文档同时包含字段和其对应的取值
  • 层次型的:文档中还可以包含新的文档
  • 结构灵活:文档不依赖于预先定义的模式

2)类型

  • 定义:类型是文档的逻辑容器,类似于表格是行的容器。
  • 每个类型中字段的定义称为映射(类似于A->B)。
  • 映射类型只是将文档进行逻辑划分,从物理角度来看,同一索引中的文档都是写入磁盘而不考虑他们所属的映射类型

3)索引

  • 索引是映射类型的容器,是独立的大量文档的集合

上述三个概念,主要从逻辑层面对ES进行理解,文档、类型和索引三者具有递进的关系,

文档归属于一种类型,而类型存在于索引之中。将上述概念类比于关系数据库,如下表所示

DBMSElasticSearch  
数据库索引
表格类型
数据行文档
模式映射
index一切皆索引
Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多
个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

2、物理设计

理解物理设计,重点是为了理解ES是如何扩展的

1)节点

  • 一个节点是一个ES的实例,一个运行ES的进程;
  • 多个节点可以加入同一个集群,在elasticsearch.yml文件中,通过cluster.name设置集群的名称

2)分片(主分片、副本分片)

  • 分片是ES所处理的最小的单元。一个分片(Lucene的索引)是一个包含倒排索引的文件目录
  • 每份分片至少有一个副本分片(副本分片是主分片的完整副本,二者包含一样的文档,副本分片用于搜索,或主分片失效后称为新的主分片)
  • ES索引由一个或多个主分片以及零个或多个副本分片构成

3)ES集群中分片的分布

  • 水平扩展:增加节点,使分片在节点间实现负载均衡
  • 垂直扩展:增加节点硬件资源,如内存、处理器等

                                   索引案例

参考资源:《ElasticSearch in Action》、《ElasticSearch权威指南》

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐