您的位置:首页 > Web前端 > HTML5

Elasticsearch5入门(2)基本概念

2017-06-16 00:00 162 查看
摘要: 翻译自官方5.4文档

有一些概念是Elasticsearch的核心。从一开始就理解这些概念对以后的学习很有帮助。

近实时(NRT)

Elasticsearch是一个近实时的搜索平台。这意味着从文档
索引到可搜索
的时间有稍微的延迟(通常为1秒)。
注意:这里的索引为动词,意思为文档插入索引,后面也会这样来表达

集群(Cluster)

集群是一个或多个节点(服务器)的集合,它们共同保存完整的数据,所有节点提供联合的索引和搜索功能。

集群由唯一的名称标识,默认情况下是“elasticsearch”。该名称很重要,因为如果节点设置为通过其名称加入集群,则节点只能是集群的一部分。

在不同环境中不要使用相同的集群名称,否则可能会导致节点加入错误的集群。例如,您可以对开发,分期(stage)和生产集群使用logging-dev,logging-stage和logging-prod。

请注意,只有一个节点的集群是有效的。此外,你还可以建立多个集群,每个集群都有自己唯一的名称。

节点(Node)

节点是集群中的一台服务器,存储数据,并参与集群的索引和搜索。就像集群一样,节点由节点名称来标识,默认情况下是一个随机唯一标识符(UUID),在启动时分配给该节点。如果不希望使用默认值,可以自定义节点名称。

可以将节点进行配置加入指定的集群。默认情况下,每个节点都设置为加入名为elasticsearch的群集,这意味着如果您在网络上启动了多个节点,并且假设它们可以相互发现,则它们将自动加入名为elasticsearch的集群。

在一个集群中,可以拥有任意个节点数。此外,如果你的网络上,当前没有其他Elasticsearch节点运行,则启动一个节点将默认形成名为elasticsearch的新的单节点集群。

索引(Index)

索引(index)是具有某种相似特征的文档的集合。例如:

客户数据的索引(index),

产品目录的索引(index),

订单数据的索引(index)。

索引(index)由索引名称(必须全部为小写)标识,该名称用于对文档进行 索引,搜索,更新和删除等。

在单个集群中,您可以根据需要定义任意多的索引(index)。
**
注意:为了帮助理解,你可以吧es想象为mysql,那么索引(Index)可以想象为库
**

类型(Type)

在索引中,您可以定义一个或多个类型。类型是索引(index)的逻辑类别/分区,其语义完全取决于你。通常,为具有一组公共字段的文档定义了一种类型。例如,假设您运行一个博客平台,并将所有数据存储在单个索引中。在此索引中,您可以定义用户数据的类型,博客数据的类型以及注释数据的类型。
**
注意:为了帮助理解,你可以吧es想象为mysql,那么Type可以想象为表
**

文档(Document)

文档(Document)是可以索引的信息的基本单位。例如,客户文档,产品文档,以及订单文档。该文档用JSON(JavaScript Object Notation)表示,这是一种无处不在的Internet数据交换格式。

在索引/类型中,可以存储尽可能多的文档(Document)。注意,尽管文档(Document)实际保存在索引中,但实际上必须将文档(Document)编入索引(index)中的一个类型(type)中。
**
注意:为了帮助理解,你可以吧es想象为mysql,那么Document可以想象为表的一条数据
**

分片(shards)&复本(replicas)

索引可以存储大量的数据,这些数据可能超过单个节点的硬件限制。例如,10亿个文档占用磁盘空间1TB的单个索引,对单个节点的磁盘可能不适合,或可能太慢,如果单节点处理的话。

为了解决这一问题,Elasticsearch可以将索引切分为多个分片(shards)。创建索引时,可以简单地定义所需的分片(shards)数。每个分片(shards)本身是一个完整的、独立的“索引(index)”,可以托管在集群中的任何节点。

分片很重要,主要原因有两个:

它允许您水平分割/缩放您的内容卷

它允许你分配和并行操作的分片(可能在多个节点上)从而提高性能/吞吐量

分片分发的机制,以及它的文档如何汇总回到搜索请求中完全由Elasticsearch管理,并且对用户来说是透明的。

在随时可能发生故障的网络/云环境中,
故障转移机制
是非常重要的,以防止分片/节点以任何方式脱机或消失。为此,Elasticsearch允许您将索引的分片的一个或多个副本复制到所谓的复制分片,或简写为复本。

复本很重要,主要原因有两个:

如果分片/节点出现故障,它可以提供高可用,因此需要注意:备份不应该和被备份的节点在同一个节点上

它允许您扩展搜索量/吞吐量,因为可以对所有副本并行执行搜索。

总而言之,每个索引可以分为多个分片。索引的复本可以为零(意味着没有副本)或多个。一旦产生副本,每个索引将具有主分片(复制的原始分片)和副分片(主分片的副本)。可以在创建索引时根据索引定义分片和副本的数量。创建索引后,你可以随时动态更改副本数,但不能更改分片数。

默认情况下,Elasticsearch中的每个索引都分配了5个主分片和1个副本,也就是说如果你的集群中至少有两个节点,那么,你的索引会有5个主分片,每个主分片有一个复本,所以总共有10个分片。

注意:
每个Elasticsearch分片都是Lucene索引。在一个Lucene索引中可以有最多的文档数量。截至LUCENE-5843,限额为2,147,483,519(= Integer.MAX_VALUE - 128)文件。您可以使用_cat / shards api监视分片大小。

有了这个方法,让我们开始有趣的部分...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Elasticsearch入门