elasticsearch的一些基本概念
需要我们注意的是,这些概念理解只是解释其含义,不推荐强制翻译成中文。
Index:这是ES存储数据的地方,类似于关系数据库的database。
Document type:嗯,类似关系数据库的表,主要功能是将完全不同schema(这个概念以后会讲到,不急)的数据分开,一个index里面可以有若干个Document type。
Document:好吧,这个类似关系数据库的一行,在同一个Document type下面,每一Document都有一个唯一的ID作为区分;
Filed:类似关系数据库的某一列,这是ES数据存储的最小单位。
Cluster和Node:ES可以以单点或者集群方式运行,以一个整体对外提供search服务的所有节点组成cluster,组成这个cluster的各个节点叫做node。
shard:通常叫分片,这是ES提供分布式搜索的基础,其含义为将一个完整的index分成若干部分存储在相同或不同的节点上,这些组成index的部分就叫做shard。
Replica:和replication通常指的都是一回事,即index的冗余备份,可以用于防止数据丢失,或者用来做负载分担。
集群
集群是一个或多个节点的集合。他们一起保存你的数据,在所有节点间提供联合索引和搜索功能。一个集群由一个特定的名称表示,默认为“elasticsearch”。这个名字是很重要的,因为一个节点只能根据这个名字,加入一个集群。在实际应用中,建议 显式设置集群名称,但是在测试或开发时,用默认名称就可以了。
注意,一个集群只有一个节点是允许的,而且可以完美运行。此外,你可以有很多具有不同名字的独立的集群。
节点
一个节点是一个单独的服务器,它作为你集群的一部分,存储你的数据,参与集群的索引和搜索功能。和集群一样,节点也是由一个名字表示,默认在启动时随机分配一个名字。如果你不喜欢默认的名字,你可以定义任何你想要的名字。这个名字对于管理来说是比较重要的,它定义了你网络中的服务器,对应Elasticsearch集群中的哪个节点。
一个节点,通过配置集群名字,加入一个特定的集群。默认,每个节点被设置加入一个名字为“elasticsearch”的集群。它意味着,如果你在网络中启动很多个节点(假设他们可以互相通信),他们会自动加入一个名为“elasticsearch”的集群。
在一个集群中,你可以加入任意数量的节点。此外,如果在你的网络中,没有运行的elasticsearch节点,启动一个几点,会默认构成一个新的名为“elasticsearch”单节点集群。
索引
在一个索引中,你可以定义一种或多种类型。类型是你索引的一种逻辑分类,他的语义完全由你决定。通常,类型是对拥有相同字段的文档的定义。例如,假设你运行了一个博客平台,在一个索引中存储了你所有的数据。在这个索引中,你可能为用户数据定义了一种类型,为博客定义了另外一种类型,甚至对评论定义了另外一种类型。
文档
文档是可以存入索引的信息的基本单位。例如,你可以拥有一个关于特定用户的文档,关于特定产品的文档,甚至一个关于订单的文档。这个文档用JSON表示。
在一个索引/类型中,你可以存储任意多的文档。注意尽管一个文档物理存在于一个索引中,它实际必须指定这个索引中的一种类型。
分片&副本
一个索引可能存储超过一个节点硬件限制的数据。例如,一个拥有10亿文档、占用1TB磁盘空间的索引,可能不适合在一个节点的磁盘上面,或者对于一个单节点的搜索请求速度太慢。
为了解决这个问题,Elasticsearch提供了将你的索引分成称作分片的多个块。当你创建一个索引,你可以简单的定义你想要的分片数量。每一个分片自身就是一个全功能和独立的“索引”,可以托管在集群中的任何节点上。
分片有以下两个重要的原因:
--它允许你水平调整容量
--它允许你在分片上分发和并行操作(可能在多个节点上),因此提高了性能/吞吐量
一个分片如何分布、它的文档如何聚合回搜索请求完全由Elasticsearch管理,对用户来说是透明的。
在一个网络或云环境中,不论什么原因一个分片或节点离线或消失时,有一个故障转移机制是很有用且被强烈推荐的。为此,Elasticsearch允许你复制一个或多个索引分片到备用分片,简称副本。
复制有以下两个重要的原因:
--它提供了分片/节点失败时的高可用。为此,要注意一个备用分片永远不能与主分片分配到同一个节点上。
--它允许你拓展你的搜索容量/吞吐量,因此搜索可以再所有副本中并行执行。
总而言之,每个索引可以分成多个分片。一个索引当然也可以被复制0到多份。一旦复制了,每个索引会有主分片(原始分片)和副本分片(主分片的复制)。分片的副本的数量可以在索引创建时定义。索引简历后,你可以在任何时候动态的改变副本数量,但你不能改变分片数量。
默认,Elasticsearch中的每个索引被分配5个分片和1个副本,它意味着如果你集群中至少有两个节点,你的每个索引会有10个分片:5个主分片和另外5个副本分片(1个完整的副本)。
http://blog.csdn.net/sdlyjzh/article/details/41720295
http://blog.csdn.net/henriezhang/article/details/37961493