持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
导语
Elasticsearch 是一个分布式的开源搜索和分析引擎,目前被广泛使用,本文记录了学习Elasticsearch的一些基本概念。
ES核心概念
Cluster
- 多台ES服务器组成的分布式系统称为一个ES集群
- 集群名称,默认是elasticsearch
Node
- ES集群中的一台服务器
- 一个节点也可以组成一个elasticsearch集群
Document&field
-
一个文档(Document)是ES中一个可被索引的基础信息单元,通常用JSON数据结构(类比于Python中的字典)表示。
-
一个document里面有多个field,每个field就是一个数据字段。
举例如下:
{
"product_id": "1",
"product_name": "高露洁牙膏",
“product_desc”: “高效美白,持续清新。",
“price”: 4.99,
"category_id": "2",
"category_name": "日化用品"
}
以上即一个商品“高露洁牙膏”的document记录,其有着id,name,描述,价格等field用于描述该商品的各种属性。
Index
索引(Index)是包含一堆有相似结构的文档数据的集合,类比于MySQL数据库中的数据库概念。
Shard
- 单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shard,分布在多台服务器上存储。
- 也称这些shard为primary shard,其备份称为replica shard
Replica
- 任何一台服务器都有可能故障或宕机,shard可能就会丢失,因此可以为每个shard创建多个replica副本。replica可以在shard故障时提供备用服务,保证数据不丢失。
- 多个replica还可以提升搜索操作的吞吐量和性能。
上图展示了一个具有4个节点的ES集群的shard分布示意图,其中每个机器上有着4个shard有两个是primary shard,另外两个是replica shard。
这里可以仔细观察一下,就会发现:任意一个primary shard和它的replica shard不在同一台机器上。那么这是为什么呢?回顾刚才对Replica shard的介绍,设置replica副本的原因就是为了保证在primary shard宕机时仍可代替原节点继续工作,因而如果一个primary shard和它的replica shard同时在一个节点上时就没有任何意义了。