《Elastic Stack 实战手册》——三、产品能力——3.5 进阶篇——3.5.1.跨集群操作(3) https://developer.aliyun.com/article/1228850
创建要复制的索引
PUT esfightalone { "settings": { "index": { "number_of_shards": 1, "number_of_replicas": 0, "soft_deletes": { "enabled": true } } }, "mappings": { "properties": { "name": { "type": "keyword" } } } }
CCR 的 Leader 索引需要使用软删除(soft_deletes),无论何时删除或更新现有文档,都可以将操作历史记录保留在领导者分片上,等重新操作历史记录时,供追随者分片任务使用。
当追随者分片从领导者复制数据时,会在领导者分片上留下标记,这样领导者就知道追随者在历史记录中的所在位置。基于这些标记,领导者分片将会保留这些操作,直到分片历史记录保留到设定时间结束(默认为 12 个小时)。
我们已经为远程集群创建了一个别名,并创建了一个我们要复制的索引,接下来我们启动复制。在 cluster2 上,执行:
PUT /esfightalone-copy/_ccr/follow { "remote_cluster" : "cluster1", "leader_index" : "esfightalone" }
注意,复制索引是只读的,不能接受写操作。至此,我们已配置了要从一个 Elasticsearch 集群复制到另一个集群的索引。
测试 CCR 复制
我们在 cluster1 上写入数据:
POST /esfightalone/_doc { "name" :"team 1" }
然后在 cluster2 上查询,验证索引数据是否同步,发现此时数据已实时同步到 cluster2 中了:
GET /esfightalone-copy/_search
CCR 属于 Elastic 官方的白金付费(Platinum License)的功能。一般企业还是会选择自研数据同步工具,来同步集群间的数据。
不过,需要体验的小伙伴可以在 Elastic 官网或阿里云 Elasticsearch 申请 30 天免费使用或者在自己的本地安装中启用试用功能。
创作人简介:
张刘毅,Elastic 认证工程师,存储研发工程师,曾经做过 AI 大数据平台研发,负责过80+ES集群。目前专注于生物医药和大数据。
博客:https://blog.csdn.net/dtzly