启动了一个单独的节点,里面不包含任何的数据和 索引,那咱们的集群看起来以下:node
一个运行中的 Elasticsearch 实例称为一个 节点,
而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成,
它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会从新平均分布全部的数据。elasticsearch
当一个节点被选举成为 主节点 时, 它将负责管理集群范围内的全部变动,例如增长、删除索引,或者增长、删除节点等。
而主节点并不须要涉及到文档级别的变动和搜索等操做,因此当集群只拥有一个主节点的状况下,即便流量的增长它也不会成为瓶颈。 任何节点均可以成为主节点。咱们的示例集群就只有一个节点,因此它同时也成为了主节点。性能
GET /_cluster/health { "cluster_name": "elasticsearch", "status": "green", "timed_out": false, "number_of_nodes": 1, "number_of_data_nodes": 1, "active_primary_shards": 0, "active_shards": 0, "relocating_shards": 0, "initializing_shards": 0, "unassigned_shards": 0 }
status 字段指示着当前集群在整体上是否工做正常。它的三种颜色含义以下:大数据
往 Elasticsearch 添加数据时须要用到 索引 —— 保存相关数据的地方。
索引其实是指向一个或者多个物理 分片 的 逻辑命名空间 。搜索引擎
一个 分片 是一个底层的 工做单元 ,一个分片是一个 Lucene 的实例,以及它自己就是一个完整的搜索引擎。
咱们的文档被存储和索引到分片内,可是应用程序是直接与索引而不是与分片进行交互。spa
Elasticsearch 是利用分片将数据分发到集群内各处的。
分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 code
一个分片能够是 主分片或者 副本分片。 索引内任意一个文档都归属于一个主分片,因此主分片的数目决定着索引可以保存的最大数据量。blog
在索引创建的时候就已经肯定了主分片数,可是副本分片数能够随时修改。索引
索引在默认状况下会被分配5个主分片, 可是为了演示目的,咱们将分配3个主分片和一份副本(每一个主分片拥有一个副本分片):ip
PUT /blogs { "settings" : { "number_of_shards" : 3, "number_of_replicas" : 1 } }
若是咱们启动了第二个节点,如今的集群会像下面展现的那样:
当第二个节点加入到集群后,3个 副本分片 将会分配到这个节点上——每一个主分片对应一个副本分片。 这意味着当集群内任何一个节点出现问题时,咱们的数据都无缺无损。
全部新近被索引的文档都将会保存在主分片上,
而后被并行的复制到对应的副本分片上。这就保证了咱们既能够从主分片又能够从副本分片上得到文档
若是咱们启动了第三个节点,那么集群可能会像以下所示的那样从新组织自身的结构:
Node 1 和 Node 2 上各有一个分片被迁移到了新的 Node 3 节点,如今每一个节点上都拥有2个分片,而不是以前的3个。 这表示每一个节点的硬件资源(CPU, RAM, I/O)将被更少的分片所共享,每一个分片的性能将会获得提高。
分片是一个功能完整的搜索引擎,它拥有使用一个节点上的全部资源的能力。 咱们这个拥有6个分片(3个主分片和3个副本分片)的索引能够最大扩容到6个节点,每一个节点上存在一个分片,而且每一个分片拥有所在节点的所有资源。
在运行中的集群上是能够动态调整副本分片数目的 ,咱们能够按需伸缩集群。
让咱们把副本数从默认的 1 增长到 2
关闭一个节点后的集群
咱们关闭的节点是一个主节点。而集群必须拥有一个主节点来保证正常工做,因此发生的第一件事情就是选举一个新的主节点: Node 2 。
在咱们关闭 Node 1 的同时也失去了主分片 1 和 2 ,而且在缺失主分片的时候索引也不能正常工做。 若是此时来检查集群的情况,咱们看到的状态将会为 red :不是全部主分片都在正常工做。
幸运的是,在其它节点上存在着这两个主分片的完整副本, 因此新的主节点当即将这些分片在 Node 2 和 Node 3 上对应的副本分片提高为主分片, 此时集群的状态将会为 yellow 。 这个提高主分片的过程是瞬间发生的,如同按下一个开关通常。