对照着关系型数据库中的概念,方便理解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的节点有下面几种角色: