我们直接使用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结构发生变化时必须重建索引;