跳到主要内容

六、Elasticsearch 教程: 术语

上一章节我们已经安装和启动了 Elasticsearch,本章节我本来就此开始讲解如何使用的。但后面转念一想,为了方便大家理解,我们拿 RDBMS (数据库) 常见的一些概念事先解释接下来会碰到的一些术语

Elasticsearch vs RDBMS

Elasticsearch 中,索引是一个集合,相当于数据库 ( RDBMS , 关系数据库管理系统 ) 中的数据库

集合中的每个映射,相当于 RDBMS 中的表

而索引中的每个 JSON 对象,又相当于 RDBMS 中的数据行

所以,Elasticsearch,集合是一些包含了 JSON 对象的映射的集合

详细的对比如下

ElasticsearchRDBMS
IndexDatabase
ShardShard
MappingTable
FieldField
JSON ObjectTuple

几个重要的概念

集群

集群中的一个节点就是一个 Elasticsearch 进程,多个节点组成一个集群

一般每个节点都运行在不同的操作系统上,配置好集群相关参数后 Elasticsearch 会自动组成集群 ( 节点发现方式也可以配置 )

集群内部通过 Elasticsearch 的选主算法选出主节点,而集群外部则是可以通过任何节点进行操作,无主从节点之分 ( 对外表现对等/去中心化,有利于客户端编程,例如故障重连 )

索引

「索引 」 有两个意思:

1、 作为动词,它指的是把一个文档「保存」到Elasticsearch中的过程,索引一个文档后,我们就可以使用Elasticsearch搜索到这个文档;
2、 作为名词,它是指保存文档的地方,相当于一个数据库概念中的「库」;

为了方便理解,我们可以将 Elasticsearch 中的一些概念对应到我们熟悉的关系型数据库上

Elasticsearch索引类型文档
DB

分片

Elasticsearch 是一个分布式系统,我们一开始就应该以集群的方式来使用它。

Elasticsearch 在保存索引时会选择适合的 「 主分片 」 ( Primary Shard ),把索引保存到其中