六、Elasticsearch 教程: 术语
上一章节我们已经安装和启动了 Elasticsearch,本章节我本来就此开始讲解如何使用的。但后面转念一想,为了方便大家理解,我们拿 RDBMS (数据库) 常见的一些概念事先解释接下来会碰到的一些术语
Elasticsearch vs RDBMS
Elasticsearch 中,索引是一个集合,相当于数据库 ( RDBMS , 关系数据库管理系统 ) 中的数据库
集合中的每个映射,相当于 RDBMS 中的表
而索引中的每个 JSON 对象,又相当于 RDBMS 中的数据行
所以,Elasticsearch,集合是一些包含了 JSON 对象的映射的集合
详细的对比如下
| Elasticsearch | RDBMS |
|---|---|
| Index | Database |
| Shard | Shard |
| Mapping | Table |
| Field | Field |
| JSON Object | Tuple |
几个重要的概念
集群
集群中的一个节点就是一个 Elasticsearch 进程,多个节点组成一个集群
一般每个节点都运行在不同的操作系统上,配置好集群相关参数后 Elasticsearch 会自动组成集群 ( 节点发现方式也可以配置 )
集群内部通过 Elasticsearch 的选主算法选出主节点,而集群外部则是可以通过任何节点进行操作,无主从节点之分 ( 对外表现对等/去中心化,有利于客户端编程,例如故障重连 )
索引
「索引 」 有两个意思:
1、 作为动词,它指的是把一个文档「保存」到Elasticsearch中的过程,索引一个文档后,我们就可以使用Elasticsearch搜索到这个文档;
2、 作为名词,它是指保存文档的地方,相当于一个数据库概念中的「库」;
为了方便理解,我们可以将 Elasticsearch 中的一些概念对应到我们熟悉的关系型数据库上
| Elasticsearch | 索引 | 类型 | 文档 |
|---|---|---|---|
| DB | 库 | 表 | 行 |
分片
Elasticsearch 是一个分布式系统,我们一开始就应该以集群的方式来使用它。
Elasticsearch 在保存索引时会选择适合的 「 主分片 」 ( Primary Shard ),把索引保存到其中