对照着关系型数据库中的概念,方便理解Elasticsearch中的术语:
| ElasticSearch概念 | MySQL对应概念 |
|---|---|
| Index | Database |
| Type | Table |
| Document | Row |
| Field | Column |
| Mapping | Schema |
| Everything is indexed | Index |
| Query | SQL |
| GET http://… | select * from … |
| POST http://… | update table set … |
(1)关系型数据库中的数据库(Database),等价于ES中的索引(Index)
(2)一个数据库下面有N张表(Table),等价于1个索引 Index下面有N多类型(Type)
(3)一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
例如:

索引(indices)会被拆分并分布在多个节点上, 称为分片(sharding)。
一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文档的索引占据600GB的磁盘空间,而任一节点只有500GB,都没有这样大的磁盘空间:

分片之所以重要,主要有两方面的原因:
有两种类型的分片:primary shard和replica shard。
Primary shard: PUT文档时,它首先在Primary shard上写入,然后在此分片的所有副本上同步。索引可以包含一个或多个主分片 (7.0.0版本前默认设置为5,之后的版本默认为1)Replica shard: 每个主分片可以具有零个或多个副本,有两个目的:增加集群的吞能力以及实现故障转移,在故障情况下可以将副本分片提升为主分片默认情况下,Elasticsearch为每个索引创建一个primary shard和一个replica shard,这意味着每个分片将具有一个副本。
分配多个分片和副本是分布式搜索功能设计的本质,提供高可用性和快速访问索引中的文档。主副本和副本分片之间的主要区别在于只有主分片可以接受PUT请求。副本和主分片都可以提供查询请求。
Primary Shard和Replica Shard组成了Replication Group,这是一个逻辑上的概念,实际上并不会分布在一个node上:

如果ES集群只有一个节点,那么Replica Shard不会被分配到该节点,因为此时如果唯一的node挂了,整个集群数据都会丢失,当添加新的Node到集群时,Replica Shard会分配到新的节点上:

elasticsearch的节点有下面几种角色: