美文网首页
ElasticSearch 系列 - 基本概念

ElasticSearch 系列 - 基本概念

作者: Rex_2013 | 来源:发表于2020-10-28 17:45 被阅读0次

1.ElasticSearch的基本概念

1.1 概念

Elasticsearch有几个核心概念,先理解这些概念将有助于掌握Elasticsearch。

1.1.1 近实时(Near Realtime / NRT)

Elasticsearch是一个近实时的搜索平台,从生成文档索引到文档成为可搜索,有一个轻微的延迟(通常是一秒钟)。

1.1.2 集群(Cluster)

ES 默认就是集群状态,整个集群是一份完整、互备的数据。

集群是一个或多个节点(服务器)的集合。集群中的节点一起存储数据,对外提供搜索功能。集群由一个唯一的名称标识,该名称默认是“elasticsearch”。集群名称很重要,节点都是通过集群名称加入集群。

集群不要重名,取名一般要有明确意义,否则会引起混乱。例如,开发、测试和生产集群的名称可以使用logging-dev、logging-test和logging-prod。

集群节点数不受限制,可以只有一个节点。

1.1.3 节点(Node)

节点是一个服务器,属于某个集群。节点存储数据,参与集群的索引和搜索功能。与集群一样,节点也是通过名称来标识的。默认情况下,启动时会分配给节点一个UUID(全局惟一标识符)作为名称。如有需要,可以给节点取名,通常取名时应考虑能方便识别和管理。

默认情况下,节点加入名为elasticsearch的集群,通过设置节点的集群名,可加入指定集群。

1.1.4 索引(Index)

索引是具有某种特征的文档集合,相当于一本书的目录。例如,可以为客户数据建立索引,为订单数据建立另一个索引。索引由名称标识(必须全部为小写),可以使用该名称,对索引中的文档进行建立索引、搜索、更新和删除等操作。一个集群中,索引数量不受限制。

****类似于rdbms的database********(5.x)********,**** 对于用户来说是一个逻辑数据库,虽然物理上会被分多个shard存放,也可能存放在多个node中。 6.x 7.x index相当于table

1.1.5 类型(Type)

类似于rdbms的table,但是与其说像table,其实更像面向对象中的class , 同一Json的格式的数据集合。(6.x只允许建一个,7.0被废弃,造成index实际相当于table级)

1.1.6 文档(Document)

文档是可以建立索引的基本信息单元,相当于书的具体章节。

例如,可以为单个客户创建一个文档,为单个订单创建另一个文档。文档用JSON (JavaScript对象表示法)表示。在索引中,理论上可以存储任意数量的文档。

****类似于rdbms的 row、面向对象里的object****

1.1.7 字段|属性(Field)

相当于字段、属性

1.1.8 分片与副本(Shards & Replicas)

索引可能存储大量数据,数据量可能超过单个节点的硬件限制。

例如,一个索引包含10亿个文档,将占用1TB的磁盘空间,单个节点的磁盘放不下。

Elasticsearch提供了索引分片功能,创建索引时,可以定义所需的分片数量。每个分片本身都是一个功能齐全,独立的“索引”,可以托管在集群中的任何节点上。

分片之所以重要,主要有2个原因:

  • 允许水平切分内容,以便内容可以存储到普通的服务器中

  • 允许跨分片操作(如查询时,查询多个分片),提高性能/吞吐量

分片如何部署、如何跨片搜索完全由Elasticsearch管理,对外是透明的。

网络环境随时可能出现故障,如果某个分片/节点由于某种原因离线或消失,那么使用故障转移机制是非常有用的,强烈建议使用这种机制。为此,Elasticsearch允许为分片创建副本。

副本之所以重要,主要有2个原因:

  • 在分片/节点失败时提供高可用性。因此,原分片与副本不应放在同一个节点上。

  • 扩展吞吐量,因为可以在所有副本上并行执行搜索。

总而言之,索引可以分片,索引分片可以创建副本。复制后,每个索引将具有主分片与副本分片。

创建索引时,可以为每个索引定义分片和副本的数量。之后,还可以随时动态更改副本数量。您可以使用shrink和split api更改现有索引的分片数量,但动态修改副本数量相当麻烦,最好还是预先计划好分片数量。

默认情况下,Elasticsearch中的每个索引分配一个主分片和一个副本(7.X之前,默认是5片,副本是0。7.X默认改为1片,副本为1)。如果集群中有两个节点,就可以将索引主分片部署在一个节点,副本分片放在另一个节点,提高可用性。

1.2 概念之间关系图

概念之间的关系图.png

这张图可以展示出ES各组件之间的关系,整张表是一个Cluster,横行是Nodes,竖列是Indices,深绿色方块是Primary Shards,浅绿色方块是Replica Shards。

至于单个Host上的Node数目问题,在硬件资源有限的情况下,一般的做法是一个Host只运行一个ES进程,也就是一个Node。例外情况是,由于ES内存配置上的特殊要求(JVM Heap不能超过32G),如果你的Host特别NB(16 Core CPU + 128G RAM + SSD 这种),完全可以在单个Host上运行多个ES进程以避免硬件资源的浪费。

1.3 ES概念和MySQL关系对比

MySQL ES5.X ES6.X ES7.X
Database Index
Table Type Index(Type成了摆设) Index(Type被移除掉)
Row Document Document
Column Field Field

相关文章

网友评论

      本文标题:ElasticSearch 系列 - 基本概念

      本文链接:https://www.haomeiwen.com/subject/ftklmktx.html