Elasticsearch黑鸟教程8:Elasticsearch集群yellow状态介绍
备注:此内容为《Elasticsearch黑鸟教程(入门系列)》之八,修订于2020年12月13日。
1、yellow状态介绍
在Elasticsearch集群中,索引的yellow状态表示所有主分片可用,但不是所有副本分片都可用,最常见的情景是单节点时,由于Elasticsearch默认有1个副本,但主分片和副本不能在同一个节点上,所以副本就是未分配unassigned状态。通过如下命令,我们可以看到所有未分配副本的索引:
- curl "http://localhost:9200/_cat/shards" | grep UNASSIGNED
结果如下所示,第一列表示索引名,第二列表示分片编号,第三列用于标识主/副本,p是主分片,r是副本。
- curl "http://localhost:9200/_cat/shards" | grep UNASSIGNED
-
- myindex1 0 r UNASSIGNED
- myindex2 0 r UNASSIGNED
-
2、分片介绍
在Elasticsearch集群中,为了数据的安全,通常采用多个分片的形式存储。Elasticsearch的分片由于职责不同,又有主分片和副本分片之分。
primary shard
:主分片,每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中。默认情况下,一个索引有5个主分片。你可以在事先制定分片的数量,当分片一旦建立,分片的数量则不能修改。
replica shard
:副本分片,每一个分片有零个或多个副本。副本主要是主分片的复制,可以增加高可用性,提高性能。
默认情况下,一个主分片有一个副本,但副本的数量可以动态的增加。需要注意的是:副本必须部署在不同的节点上,不能部署在和主分片相同的节点上。
3、分片的设置参数
number_of_shards参数:是指索引要做多少个分片,只能在创建索引时指定,后期无法修改,如下所示:
- curl -XPUT 'http://localhost:9200/myindex' -H 'Content-Type: application/json' -d '
- {
- "settings": {
- "number_of_shards": 10,
- "number_of_replicas" : 1
- }
- }
- '
查看一下设置的效果:
- curl -XGET 'http://localhost:9200/myindex/_settings?pretty'
- {
- "myindex" : {
- "settings" : {
- "index" : {
- "routing" : {
- "allocation" : {
- "include" : {
- "_tier_preference" : "data_content"
- }
- }
- },
- "number_of_shards" : "10",
- "provided_name" : "myindex",
- "creation_date" : "1606892563505",
- "number_of_replicas" : "1",
- "uuid" : "HbgnTQYWQnucIb2-7RfacA",
- "version" : {
- "created" : "7100099"
- }
- }
- }
- }
- }
number_of_replicas参数:是指每个分片有多少个副本,后期可以动态修改,如下所示:
- curl -XPUT 'http://localhost:9200/myindex/_settings' -H 'Content-Type: application/json' -d '
- {
- "index" : {
- "number_of_replicas" : 2
- }
- }
- '