es集群节点数和分片数关系_ES集群内原理&相关性以及分数score计算

1. 集群相关

一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。

当一个节点被选举成为主节点时,它将负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。 而主节点并不需要涉及到文档级别的变更和搜索等操作,所以当集群只拥有一个主节点的情况下,即使流量的增加它也不会成为瓶颈。 任何节点都可以成为主节点。我们的示例集群就只有一个节点,所以它同时也成为了主节点。

作为用户,我们可以将请求发送到 集群中的任何节点 ,包括主节点。 每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。 Elasticsearch 对这一切的管理都是透明的。

1. 集群健康

Elasticsearch 的集群监控信息中包含了许多的统计数据,其中最为重要的一项就是 集群健康 , 它在 status 字段中展示为 green 、 yellow 或者 red 。

例如启动一个默认的es服务器之后查看:

$ curl http://127.0.0.1:9200/_cluster/health?pretty

% Total % Received %Xferd Average Speed Time Time Time Current

Dload Upload Total Spent Left Speed100 467 100 467 0 0 29187 0 --:--:-- --:--:-- --:--:-- 29187{"cluster_name" : "my-application","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,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0}

解释: status 字段指示着当前集群在总体上是否工作正常。它的三种颜色含义如下:

green:所有的主分片和副本分片都正常运行。

yellow:所有的主分片都正常运行,但不是所有的副本分片都正常运行。

red:有主分片没能正常运行

2. 添加索引

索引实际上是指向一个或者多个物理 分片 的 逻辑命名空间 。

1. 分片:

一个 分片 是一个底层的工作单元 ,它仅保存了全部数据中的一部分。一个分片是一个 Lucene 的实例,它本身就是一个完整的搜索引擎。我们的文档被存储和索引到分片内,但是应用程序是直接与索引而不是与分片进行交互。

Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。

一个分片可以是 主 分片或者 副本 分片。 索引内任意一个文档都归属于一个主分片,所以主分片的数目决定着索引能够保存的最大数据量。一个索引必须创建主分片,副本分片可以没有。

分片和主流关系型数据库的表分区的概念有点类似。

2. 副本:

一个副本分片只是一个主分片的拷贝。副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。

如果主分片有3个,那么一个副本replica就对应有1X3=3个replica shard副本分片。副本分片数量计算公式 = 副本数量repilca num X 主分片数量primary shard num

在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改。也就是说分片数量不允许修改,副本数量可以修改。

3. 分片与副本的关系:

每个主分片(primary shard)不会和副本分片(replica shard)存在于同一个节点中,有效的保证es的数据高可用性。

例如1:比如一个索引有3个分片和1副本,那么一共就有3*2=6个分片,3个是主分片,3个是副本分片,每个主分片都会对应一个副本分片。

例如2:只有2个节点,但是有3个分片和2个副本,这样的情况就会导致分片无法完全分配,因为主分片和副本分片不能存在于同一个节点中。

4. 测试:

(1)在包含一个节点的集群内创建名为 blogs 的索引。分配3个主分片和一份副本(每个主分片拥有一个副本分片):

再次查看集群健康信息:

{"cluster_name": "my-application","status": "yellow","timed_out": false,"number_of_nodes": 1,"number_of_data_nodes": 1,"active_primary_shards": 3,"active_shards": 3,"relocating_shards": 0,"initializing_shards": 0,"unassigned_shards": 3,"delayed_unassigned_shards": 0,"number_of_pending_tasks": 0,"number_of_in_flight_fetch": 0,"task_max_waiting_in_queue_millis": 0,"active_shard

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值