elasticsearch学习(三):分布式

 

es的分布式思想跟如今流行的不少开发技术的分布式一个道理。一个es 搜索服务做为一个集群,集群中存在不少节点,一个节点就是一个搜索服务器。这么多节点中,会按照必定的机制推举出一个 master节点,该节点负责任务的分配,新增节点删除节点等等行为。服务器

 

先讲分片。   引用:elasticsearch

分片(shard)工做单元(worker unit) 底层的一员,它只负责保存索引中全部数据的一小片。而且它自身也是一个完整的搜索引擎。咱们的文档存储而且被索引在分片中,可是咱们的程序并不会直接与它们通讯。取而代之,它们直 接与索引进行通讯的。分布式

在 elasticsearch 中,分片用来分配集群中的数据。把分片想象成一个数据的容器。数据被存储在分片中,而后分片又被分配在集群的节点上。当你的集群扩展或者缩小时,elasticsearch 会自动的在节点之间迁移分配分片,以便集群保持均衡。搜索引擎

分片分为 主分片(primary shard) 以及 从分片(replica shard) 两种。在你的索引中,每个文档都属于一个主分片,因此具体有多少主分片取决于你的索引能存储多少数据。索引

虽然理论上主分片对存储多少数据是没有限制的。分片的最大数量彻底取决于你的实际情况:硬件的配置、文档的大小和复杂度、如何索引和查询你的文档,以及你指望的响应时间。开发

从分片只是主分片的一个副本,它用于提供数据的冗余副本,在硬件故障时提供数据保护,同时服务于搜索和检索这种只读请求。文档

索引中的主分片的数量在索引建立后就固定下来了,可是从分片的数量能够随时改变。it

   在我本地新搭建的es服务上建立一个名为twitter的索引。该索引的功能type有一个叫 tweet。 经过以前安装的es-head访问http://localhost:9200/_plugin/head/ ,能够看到分片信息:ast

由于没有修改配置,es中一个索引默认有一组从分片,五个主分片。集群

 

在观察

一个索引有五个从分片没有被分配,五个已经被分配。缘由是如今只有一台服务器,主分片都已经被自动分配到当前的服务器上,而后从分片的目的是为了备份数据,作故障转移,因此不会再本服务器上分配。这种状况下,es的集群健康值就是。若是此时,在本服务器上(或者其余服务器),启动一个 cluster.name 与以前启动的es 实例的cluster.name 相同的es实例,这五个没有被分配的从分配就会被自动分配过去。

结果以下:健康值也变成了

以上就是es集群 分布式 容错转移的介绍。

 

集群健康值 status: