您的位置:首页 > 其它

elasticsearch基本概念

2015-09-28 14:53 267 查看

近实时 Near Realtime(NRT)

Elasticsearch is a near real time search platform. What this means is there is a slight latency (normally one second) from the time you index a document until the time it becomes searchable.

Elasticsearch 是一个近实时的搜索平台。这意味着就是当你索引一个文档后,然后可检索仅有轻微延迟(一般都是一秒)。

集群(Cluster)

elasticesearh 提供至少一台节点服务的集群,拥有所有数据集,提供联合索引和检索能力。

“elasticsearch”是整个集群的唯一名字。而这个名字的重要性是如果一个节点想成为集群中一个节点,那创建节点后只能通过集群的名字加入这个集群中。这也确保了你不同环境(生产环境、测试环境、开发环境)不能重复利用同一个集群名字,否则 会导致“节点”加入错的环境。

一般来说,我们创建logging-dev,logging-stage,loggin-prod 分别是开发环境,预生成环境,生产环境集群。

注意它是有效的,完全可以只有一个集群节点。此外,你也可以有多个独立集群,每个集群都有自己独特的集群名称。

节点(Node)

一个节点是一个服务器集群的一部分,存储您的数据,并参与集群的索引和搜索功能。

就像一个集群,一个节点是由一个名字标识,默认情况下是一个随机Marvel人物名称分配给节点在启动。

如果你不希望默认,您可以定义任何你想要的节点名称。这个名字最近中重要目的是方便管理,你想确定哪些服务器在您的网络中哪些节点对应Elasticsearch集群。

通过集群名称,一个节点加入到指定集群是可配置的。

默认情况下,每个节点设置加入集群命名elasticsearch,这意味着如果你启动一个网络上一定数量的节点,并假定他们都可以发现,每—都将自动形成并加入一个集群名字叫elasticsearch。

在一个集群中,你可以有尽可能多的节点。

更重要的是,如果在当前网络上,没有其他elasticsearch集群,那当启动新的节点,将会按照默认集群名字叫elasticsearch

索引(Index)

索引是文档(documents)的集合,拥有其他类似的特点。比如,你可以有客户数据的索引,产品目录索引,以及订单数据的索引。

索引必须是通过唯一的名字(必须所有是小写字母),当在文档(documents)执行索引、检索、更新、删除等操作,需要通过唯一的索引名称

在一个集群众,你可以定义很多你想要的索引

类型(Type)

一个索引,你可以定义一个或者多个类型。

类型是一个逻辑类别/分区索引,使用场景是完全取决于你的。

一般来说,类型是为文档定义一组常用字段。例如,假如 你运行一个博客平台,存储所有数据在一个索引中。而在这个索引中,你可以给用户数据定义一种类型,博客数据定义另一种类型,以及评论数据定义其他类型

文档(Document)

文档的基本单元可以被索引的信息。

比如,你可以有一个文档索引客户数据,另一个文档索引产品数据,以及另一个索引订单数据。这个文档是用JSON(JavaScript Object Notation)格式表示的,JSON是一个无处不在的互联网数据交换格式。

使用索引/类型,你可以存储任何你想要的文档。

注意,尽管一个文档,物理上存在一个索引,而一个文档实际上必须被索引/分配给内部索引类型。

分区&副本(Shards & Replicas)

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

例如,单个索引十亿个文档占用1 TB的磁盘空间可能不适合在磁盘上的一个节点或可能过于缓慢,仅从单个节点搜索请求服务。

为了解决这个问题,Elasticsearch能够索引细分成多个块分区

当您创建索引时,您可以简单地定义你想要的分区数量。每个切分本身就是一个全功能和独立的“指数”,可以托管在集群中的任何节点。

切分是重要的有两个主要原因:

- 它允许你水平分割体积/扩展内容

- 它允许你分布式和并行化操作在分区(可能在多个节点),从而增加性能和吞吐量

分区是如何分布的机制以及其文档是如何聚合回搜索请求是完全由Elasticsearch管理,作为用户是透明的。

在网络/云环境,失败随时可以预计,它是非常有用的,强烈推荐分区/节点故障转移机制,以防脱机或消失不管出于什么原因。

为此,Elasticsearch允许你做出一个或多个索引分区的复制到所谓的复制分区,或简称为副本。

副本是重要的有两个主要原因:

- 它提供高可用的单个分区/节点失败场景。由于这个原因,重要的是要注意,一个复制分区是永远不会分配在同一节点与原始/主分区。

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

结论,每个索引可以被分割成多个分区。一个索引可以被重复 0(意味没副本)或者多次。

一旦被重复了,每一个索引将会有很多主分区(通过原始分区 replica 重复形成的),副本分区(主分区的副本数)。分区和副本数量,在每个索引被创建的时候可以被创建。当索引创建后, 你可以在任何时候动态修改副本数,但是不能修改分区数据(创建索引后)

默认的,在elasticsearch中,每个索引被分配5个主分区和一个副本,这就意味着,如果在你的集群中至少有个两个节点,你的索引将会有5个主分区和其他5个副本分区(1个完整的副本),因此,每个索引共计有10个分区。

注意(Note)

每个elasticsearch 分区都是一个lucene索引。 文档最大数量是根据你的一个Lucene 的索引数据。由于LUCENE-5843, 限制 是 2,147,483,519 (= Integer.MAX_VALUE - 128) 个文档,你可以通过_cat/shards api,监控分区大小。

尊重原创,拒绝转载

/article/1810519.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: