Elasticsearch5入门(2)基本概念
2017-06-16 00:00
162 查看
摘要: 翻译自官方5.4文档
有一些概念是Elasticsearch的核心。从一开始就理解这些概念对以后的学习很有帮助。
注意:这里的索引为动词,意思为文档插入索引,后面也会这样来表达
集群由唯一的名称标识,默认情况下是“elasticsearch”。该名称很重要,因为如果节点设置为通过其名称加入集群,则节点只能是集群的一部分。
在不同环境中不要使用相同的集群名称,否则可能会导致节点加入错误的集群。例如,您可以对开发,分期(stage)和生产集群使用logging-dev,logging-stage和logging-prod。
请注意,只有一个节点的集群是有效的。此外,你还可以建立多个集群,每个集群都有自己唯一的名称。
可以将节点进行配置加入指定的集群。默认情况下,每个节点都设置为加入名为elasticsearch的群集,这意味着如果您在网络上启动了多个节点,并且假设它们可以相互发现,则它们将自动加入名为elasticsearch的集群。
在一个集群中,可以拥有任意个节点数。此外,如果你的网络上,当前没有其他Elasticsearch节点运行,则启动一个节点将默认形成名为elasticsearch的新的单节点集群。
客户数据的索引(index),
产品目录的索引(index),
订单数据的索引(index)。
索引(index)由索引名称(必须全部为小写)标识,该名称用于对文档进行 索引,搜索,更新和删除等。
在单个集群中,您可以根据需要定义任意多的索引(index)。
**
注意:为了帮助理解,你可以吧es想象为mysql,那么索引(Index)可以想象为库
**
**
注意:为了帮助理解,你可以吧es想象为mysql,那么Type可以想象为表
**
在索引/类型中,可以存储尽可能多的文档(Document)。注意,尽管文档(Document)实际保存在索引中,但实际上必须将文档(Document)编入索引(index)中的一个类型(type)中。
**
注意:为了帮助理解,你可以吧es想象为mysql,那么Document可以想象为表的一条数据
**
为了解决这一问题,Elasticsearch可以将索引切分为多个分片(shards)。创建索引时,可以简单地定义所需的分片(shards)数。每个分片(shards)本身是一个完整的、独立的“索引(index)”,可以托管在集群中的任何节点。
分片很重要,主要原因有两个:
它允许您水平分割/缩放您的内容卷
它允许你分配和并行操作的分片(可能在多个节点上)从而提高性能/吞吐量
分片分发的机制,以及它的文档如何汇总回到搜索请求中完全由Elasticsearch管理,并且对用户来说是透明的。
在随时可能发生故障的网络/云环境中,
复本很重要,主要原因有两个:
如果分片/节点出现故障,它可以提供高可用,因此需要注意:备份不应该和被备份的节点在同一个节点上
它允许您扩展搜索量/吞吐量,因为可以对所有副本并行执行搜索。
总而言之,每个索引可以分为多个分片。索引的复本可以为零(意味着没有副本)或多个。一旦产生副本,每个索引将具有主分片(复制的原始分片)和副分片(主分片的副本)。可以在创建索引时根据索引定义分片和副本的数量。创建索引后,你可以随时动态更改副本数,但不能更改分片数。
默认情况下,Elasticsearch中的每个索引都分配了5个主分片和1个副本,也就是说如果你的集群中至少有两个节点,那么,你的索引会有5个主分片,每个主分片有一个复本,所以总共有10个分片。
注意:
每个Elasticsearch分片都是Lucene索引。在一个Lucene索引中可以有最多的文档数量。截至LUCENE-5843,限额为2,147,483,519(= Integer.MAX_VALUE - 128)文件。您可以使用_cat / shards api监视分片大小。
有了这个方法,让我们开始有趣的部分...
有一些概念是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监视分片大小。
有了这个方法,让我们开始有趣的部分...
相关文章推荐
- elasticsearch5基本概念
- Basic Concepts of Elasticsearch Elasticsearch基本概念
- Elasticsearch基础教程-基本概念
- Oracle RAC学习笔记:基本概念及入门
- 消息队列(Message Queue)基本概念和使用场景分析
- 关于C#网络编程的基本概念
- 关系型数据库与NOSQL基本概念
- velocity学习记录之一(velocity基本概念)
- kubernetes入门(03)kubernetes的基本概念
- JavaScript高级程序设计第三章基本概念——语句
- MFC基本概念理解
- 突发速率基本概念
- Cocos2d-x的基本概念
- Java基本概念-session和cookie
- OpenStack流行的部署模式以及一些基本概念
- Java基本概念-监听器
- 深入理解Java:注解(Annotation)基本概念
- Delphi中流的基本概念
- 一、UML基本概念
- 10025---Zookeeper入门:基本概念、5项配置、启动