概述
elasticsearch 从6.1版本开始支持shard split。但是和solr不同,elasticsearch并不支持针对单个shard split,而是支持索引级别的split。elasticsearch支持从一个索引split到另外一个索引,源索引的每一个shard都会split成目标索引的两个或者多个shard。
elasticsearch使用split api有两个限制条件。其一是在创建源索引的时候必须指定number_of_routing_shards参数。该参数用于确定哈希空间,下文会具体分析该参数的作用。但是到7.0版本后该参数可以不用人为指定,elasticsearch会帮我们自动生成该参数的值。其二是准备split时必须将源索引阻塞写操作,目的是为了保证split过程中如果出什么问题能不丢数据。
用法
创建源索引
PUT my_source_index
{
"settings": {
"index.number_of_shards" : 1,
"index.number_of_routing_shards" : 2
}
}
阻塞源索引的写操作
PUT /my_source_index/_settings
{
"settings": {
"index.blocks.write": true
}
}
split
POST my_source_index/_split/my_target_index
{
"settings": {
"index.number_of_shards": 2
}
}
监控
可以通过_cat recover接口查看split过程
总结
简单介绍了elasticsearch shard split 怎么使用,在下面几篇文章中将从代码上分析split是怎么实现的。
elasticsearch shard split 分析(二)
elasticsearch shard split 分析(三)
elasticsearch shard split 分析(四)