物理复制功能适用于索引有副本、写入数据量大、对数据写入后可见性延迟要求不高的场景(如日志场景、时序分析场景),可大幅降低CPU开销,提升写入性能。与原生Elasticsearch相比,开启物理复制功能后写入性能提升大于45%。
物理复制功能由阿里云Elasticsearch自研的apack插件提供,6.7.0(内核版本1.2.0及以上)和7.10.0版本的实例默认已安装apack插件,不可卸载,可在插件配置页面查看安装状态。本文中的命令均可在Kibana控制台中执行,详情请参见通过Kibana连接集群。
开启物理复制功能
创建索引时,通过settings开启物理复制功能。开启后,主分片的写入机制与原生Elasticsearch一致(既写索引文件也写translog),而副本分片只写translog。主分片在每次refresh时,通过网络将增量的索引文件拷贝到副本分片,主副分片的可见性延迟为毫秒级别。

apack插件安装后创建的索引默认已开启物理复制功能,无需手动设置。如需为插件安装前创建的索引开启物理复制功能,请参见为已有索引开启物理复制功能。
PUT index-1
{
"settings": {
"index.replication.type" : "segment"
}
}关闭物理复制功能
关闭物理复制功能后,索引切回原生模式(主副分片都会写索引文件和translog)。如需使用通过CCR跨集群复制解决跨集群容灾场景,必须先关闭物理复制功能。
关闭索引。
POST index-1/_close更新索引settings,关闭物理复制功能。
PUT index-1/_settings { "index.replication.type" : null }打开索引。
POST index-1/_open
为已有索引开启物理复制功能
为原生模式的已有索引开启物理复制功能前,需要先将副本数设置为0并关闭索引。
将索引的副本数设置为0。
PUT index-1/_settings { "index.number_of_replicas": 0 }关闭索引。
POST index-1/_close更新索引settings,开启物理复制功能。
PUT index-1/_settings { "index.replication.type" : "segment" }打开索引。
POST index-1/_open将索引的副本数设置为1。
PUT index-1/_settings { "index.number_of_replicas": 1 }
常见问题
Q:使用物理复制功能,主备复制的延迟时间是多少?
A:主备复制的延迟时间与集群负载及写入量有关,可在高级监控下引擎指标中的索引维度增量拷贝延迟指标获取延迟耗时,详细信息请参见引擎指标。