Elasticsearch学习笔记之二(ES集群)

来源:互联网 发布:学校机房监控软件 编辑:程序博客网 时间:2024/05/19 00:11

这篇是关于elasticsearch集群搭建的,网上关于elasticsearch集群搭建的文章很多,我这就就不演示若何搭建了。

这个有篇文章,大家可以参考一下:

http://blog.csdn.net/napoay/article/details/52202877

本次主要是说说集群里面的一些概念,集群搭建起来很快,但是集群起来了,你得知道集群里面的信息,会观察集群的状态。

①索引和类型

在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:

Relational DB -> Databases -> Tables-> Rows -> Columns

Elasticsearch -> Indices -> Types-> Documents -> Fields

Elasticsearch集群可以包含多个 索引(indices)(数据库),每一个索引可以包含多个 类型(types)(表),每一个类型包含多个 文档(documents)(行),然后每个文档包含多个 字段(Fields)(列)。


最左边红框是索引名,中间红框是类型名,最右边红框是Documents



②节点和主节点

节点(node)是一个运行着的Elasticsearch实例,一个集群里面有多个ES的节点,一个集群通常会有一个主节点。


主节点有什么用?

主节点的作用主要有两个:一是做负载均衡,将请求均匀的转发到其他节点上。

二是存储其他节点必要的信息,如果没有存储信息要不然它怎么知道数据存在哪个节点的那个索引那个类型呢?其实每个节点都会存储其他节点的信息,一旦主节点宕机了,其他的节点中会选举一个节点当做主节点。


上面红框是节点,下面红框是主节点。



③主分片和复制分片

分片只是一个逻辑上的分区,就跟我们在操作系统中的文件一样,这里类似一个分区可以理解成一个文件夹。用来存储数据。

当请求到来的时候数据会先经过主节点,把数据存贮在主节点上,然后将该数据复制一份存贮在复制分片上,这样就保证了数据有备份,即使某个ES节点宕机了,宕机ES的主分片不见了,那么其他的ES节点监控到有节点宕机,这是其他节点就会把宕机ES的主分片数据得备份拿出来,重新作为一个主分片。

集群上的主分片和复制分片:

上面两个红框里面的是复制分片,最下面红框是主分片。





注意:我们的主分片和复制分片是在索引创建时指定的,一旦索引创建,主分片的个数就不能修改了,因为es的路由算法跟这个主分片的个数是有关系的,你修改了主分片的个数,可能以前的数据就查询不到了。

具体算法如下:

shard = hash(routing) %number_of_primary_shards

routing 值是一个任意字符串,它默认是 _id 但也可以自定义。这个 routing 字符串通过哈希函数生成一个数字,然后除以主切片的数量得到一个余数(remainder),余数的范围永远是 0 到 number_of_primary_shards -1 ,这个数字就是特定文档所在的分片。这也解释了为什么主分片的数量只能在创建索引时定义且不能修改:如果主分片的数量在未来改变了,所有先前的路由值就失效了,文档也就永远找不到了。


④集群的健康


在Elasticsearch集群中可以监控统计很多信息,但是只有一个是最重要的:集群健康(cluster health)。集群健

康有三种状态: green 、 yellow 或 red 。



我们还可以从红框中看是80 of 80的字样,前一个80说明目前有多少分片可用,而后一个80则表示总的分片数。

原创粉丝点击