ES 分片与索引常见操作


我们直接使用Kibana的 Dev Tools工具进行命令操作

1、新增索引

执行命令PUT /test_index,创建名为test_index的索引

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "test_index"
}

说明
1)默认创建索引时,会分配 5个primary shard,并为每个primary shard分配一个 replica shard;
2)如果磁盘空间不足 15%,则不分配 replica shard。磁盘空间不足 5%,则不再分配任何的 primary shard。

2、查看健康状态

执行命令GET _cat/health?v

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1594993339 13:42:19  elasticsearch green           2         2     16   8    0    0        0             0                  -                100.0%

说明
cluster:集群名称 elasticsearch
status:状态 green (分为green 、yellow、red)
node.total:节点总数2个
node.data:节点数据2个
shards:总分片16个(包含8个副本)
pri:主分片8个
unassign:未分配的分片

3、检查分片信息

执行命令GET _cat/shards?v
可以查看到test_index对应的p主分片r副本分片信息

index                          shard prirep state    docs   store ip        node
test_index                     0     p      STARTED     0    208b 127.0.0.1 LAPTOP-GBVVMH3R
test_index                     0     r      STARTED     0    208b 127.0.0.1 LAPTOP-GBVVMH3R

4、检查索引信息

执行命令GET _cat/indices

green open test_index                     _AHJIhQNS26GrxjcxKL_PQ 1 1     0  0    416b    208b

5、设置磁盘限制

PUT _cluster/settings 
{ 
	"transient": { 
		"cluster.routing.allocation.disk.watermark.low": "90%", 
		"cluster.routing.allocation.disk.watermark.high": "5gb"
	 }
 }

说明
1)ES 默认当磁盘空间不足 15%时,会禁止分配 replica shard。可以动态调整 ES 对磁盘空间的要求限制;
2)配置磁盘空间限制的时候,要求low必须比 high 大,可以使用百分比或 gb 的方式设置,且ES要求low至少满足磁盘 95%的容量。
3)low - 对磁盘空闲容量的最低限制(默认85%);high - 对磁盘空闲容量的最高限制(默认90%,极限值95%)
4)low 为 50gb。high 为 10gb。则当磁盘空闲容量不足 50gb 时停止分配 replica shard。 当磁盘空闲容量不足 10gb 时,停止分配 shard,并将应该在当前结点中分配的 shard 分配 到其他结点中;

6、查看集群健康状态

执行命令GET _cluster/health

{
  "cluster_name" : "elasticsearch",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 8,
  "active_shards" : 16,
  "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
}

7、创建索引时指定分片数

创业索引test_index2,分配2个主分片,每个主分片再分别对应1个副本分片,共计4个分片

PUT /test_index2
{ 
  "settings":{ 
    "number_of_shards" : 2, 
    "number_of_replicas" : 1 
    
  } 
}

GET _cat/indices可见详情

green open test_index2                    0UZIXKylTsWKeVM1niDCEQ 2 1     0  0    832b    416b

8、更新索引

将索引更新为每个主分片分别对应2个副本分片

PUT /test_index2/_settings
{ 
  "number_of_replicas" : 2
}
yellow open test_index2                    0UZIXKylTsWKeVM1niDCEQ 2 2     0  0    832b    416b

说明
1)索引一旦创建,primary shard数量不可变化,可以改变replica shard数量;
2)ES 中对shard的分布是有要求,尽可能保证primary shard平均分布在多个节点上。Replica shard会保证不和它备份的那个primary shard 分配在同一个 节点上。
3)这里yellow的原因是6个分片需要3个节点才能使用主备相互备份,但集群实际只有2个节点;

9、删除索引

执行命令DELETE /test_index2,删除多个则使用逗号隔开DELETE /index01 , index02

10、索引不可变特点

倒排索引不可变(指primary shard不可变)
优点
1)不需要锁,提升并发能力;
2)数据不变,方便做缓存;
3)因为数据是不可变的,可以通过压缩技术来节省 CPU 和 IO 的开销;
缺点
1) index结构发生变化时必须重建索引;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值