Elasticsearch 是一个近实时的搜索平台。这意味着就是当你索引一个文档后,然后可检索仅有轻微延迟(一般都是一秒)。
elasticesearh 提供至少一台节点服务的集群,拥有所有数据集,提供联合索引和检索能力。
“elasticsearch”是整个集群的唯一名字。而这个名字的重要性是如果一个节点想成为集群中一个节点,那创建节点后只能通过集群的名字加入这个集群中。这也确保了你不同环境(生产环境、测试环境、开发环境)不能重复利用同一个集群名字,否则 会导致“节点”加入错的环境。
一般来说,我们创建logging-dev,logging-stage,loggin-prod 分别是开发环境,预生成环境,生产环境集群。
注意它是有效的,完全可以只有一个集群节点。此外,你也可以有多个独立集群,每个集群都有自己独特的集群名称。
一个节点是一个服务器集群的一部分,存储您的数据,并参与集群的索引和搜索功能。
就像一个集群,一个节点是由一个名字标识,默认情况下是一个随机Marvel人物名称分配给节点在启动。
如果你不希望默认,您可以定义任何你想要的节点名称。这个名字最近中重要目的是方便管理,你想确定哪些服务器在您的网络中哪些节点对应Elasticsearch集群。
通过集群名称,一个节点加入到指定集群是可配置的。
默认情况下,每个节点设置加入集群命名elasticsearch,这意味着如果你启动一个网络上一定数量的节点,并假定他们都可以发现,每—都将自动形成并加入一个集群名字叫elasticsearch。
在一个集群中,你可以有尽可能多的节点。
更重要的是,如果在当前网络上,没有其他elasticsearch集群,那当启动新的节点,将会按照默认集群名字叫elasticsearch
索引是文档(documents)的集合,拥有其他类似的特点。比如,你可以有客户数据的索引,产品目录索引,以及订单数据的索引。
索引必须是通过唯一的名字(必须所有是小写字母),当在文档(documents)执行索引、检索、更新、删除等操作,需要通过唯一的索引名称
在一个集群众,你可以定义很多你想要的索引
一个索引,你可以定义一个或者多个类型。
类型是一个逻辑类别/分区索引,使用场景是完全取决于你的。
一般来说,类型是为文档定义一组常用字段。例如,假如 你运行一个博客平台,存储所有数据在一个索引中。而在这个索引中,你可以给用户数据定义一种类型,博客数据定义另一种类型,以及评论数据定义其他类型
文档的基本单元可以被索引的信息。
比如,你可以有一个文档索引客户数据,另一个文档索引产品数据,以及另一个索引订单数据。这个文档是用JSON(JavaScript Object Notation)格式表示的,JSON是一个无处不在的互联网数据交换格式。
使用索引/类型,你可以存储任何你想要的文档。
注意,尽管一个文档,物理上存在一个索引,而一个文档实际上必须被索引/分配给内部索引类型。
索引可以存储大量的数据,可以超过单个节点的硬件限制。
例如,单个索引十亿个文档占用1 TB的磁盘空间可能不适合在磁盘上的一个节点或可能过于缓慢,仅从单个节点搜索请求服务。
为了解决这个问题,Elasticsearch能够索引细分成多个块分区
当您创建索引时,您可以简单地定义你想要的分区数量。每个切分本身就是一个全功能和独立的“指数”,可以托管在集群中的任何节点。
切分是重要的有两个主要原因:
- 它允许你水平分割体积/扩展内容
- 它允许你分布式和并行化操作在分区(可能在多个节点),从而增加性能和吞吐量
分区是如何分布的机制以及其文档是如何聚合回搜索请求是完全由Elasticsearch管理,作为用户是透明的。
在网络/云环境,失败随时可以预计,它是非常有用的,强烈推荐分区/节点故障转移机制,以防脱机或消失不管出于什么原因。
为此,Elasticsearch允许你做出一个或多个索引分区的复制到所谓的复制分区,或简称为副本。
副本是重要的有两个主要原因:
- 它提供高可用的单个分区/节点失败场景。由于这个原因,重要的是要注意,一个复制分区是永远不会分配在同一节点与原始/主分区。
- 它允许你扩展您的搜索量/吞吐量,因为搜索可以在所有副本并行执行。
结论,每个索引可以被分割成多个分区。一个索引可以被重复 0(意味没副本)或者多次。
一旦被重复了,每一个索引将会有很多主分区(通过原始分区 replica 重复形成的),副本分区(主分区的副本数)。分区和副本数量,在每个索引被创建的时候可以被创建。当索引创建后, 你可以在任何时候动态修改副本数,但是不能修改分区数据(创建索引后)
默认的,在elasticsearch中,每个索引被分配5个主分区和一个副本,这就意味着,如果在你的集群中至少有个两个节点,你的索引将会有5个主分区和其他5个副本分区(1个完整的副本),因此,每个索引共计有10个分区。
每个elasticsearch 分区都是一个lucene索引。 文档最大数量是根据你的一个Lucene 的索引数据。由于LUCENE-5843, 限制 是 2,147,483,519 (= Integer.MAX_VALUE - 128) 个文档,你可以通过_cat/shards api,监控分区大小。
尊重原创,拒绝转载
http://blog.csdn.net/stark_summer/article/details/48782953