[开源重构]Search(Elasticsearch/OpenSearch) Sync Tool

开源重构Elasticsearch/OpenSearch Sync Tool

背景

  • 因为要做集群灾备,需要在主备两个集群之间持续性地同步数据,调查过多个方案:
    • CCR(Cross-cluster replication) 官方工具,可惜需要收费,无奈放弃 😦
    • esm 如官方文档说所,最大的特点 . 可惜也发现不少问题:
      • 同步后发现数据不全,一般需要采用多次执行的方式来补全数据;
      • 调查后发现,其采用的是获取源数据后,使用多个 goroutine 将数据通过bulk写入目标index, 会造成目标index重复写入很多相同数据的问题;
      • 更改源码,加入 --sync 功能,通过 scroll 同时查询源和目标index,比较其内容的方式,实现增量更新(Add/Update/Del), 目前该 PR/84 已经合并到esm中。
      • 目前 esm 的作者已经不再维护,因此后来发现的一些bug也很难改善及合并。
      • 从 issue 和 源码来看, esm 不支持 OpenSearch, esm作者以后也不会再更改

更改

  • 对源码进行了更改,对同步(Sync)功能进行了加强,从而满足我在两个集群之间"近"实时同步的需求。
    • 增加 --stamp 参数,如果 index 中有表示最后更新时间的字段,可以进一步减少查询的数据量(本质是利用esm中的 --query 方式,单独提取出来更易于控制)
    • 增加对 OpenSearch 的支持
    • 对已有代码进行了较大的重构,更改了一些bug
    • 编写通用的集群同步脚本 search_sync.sh, 可以按需同步集群中的index,也可以对每月自动生成的 index 进行处理.
    • 为了方便测试,使用 docker-compose 来设置不同版本,不同类型的 源/目标 集群.

注意

  • 目前主要的更改集中在 --sync 上,其他功能测试的不多,有可能会出现问题.

源码位置

相关推荐
MemoriKu23 分钟前
Flutter 本地 AI 相册工程收口:从屏幕常亮、标签体系到照片属性后台队列
大数据·人工智能·python·flutter·elasticsearch·搜索引擎·数据库架构
Elastic 中国社区官方博客1 小时前
Elasticsearch:使用向量搜索构建现代应用的最佳实践
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Drgfd1 小时前
工业机器人迭代升级:非人形赛道,重构制造业生产效率底层逻辑
重构·机器人
格兰芬多呼神护卫1 小时前
中国电信 TeleAI 开源 KungfuBot / PBHC 框架分析笔记
笔记·开源
小易撩挨踢2 小时前
[特殊字符] Spring AI 2.0.0 正式发布:大版本升级,MCP 原生集成 + Anthropic SDK 全线重构
人工智能·spring·重构
DO_Community2 小时前
百亿参数开源模型托管成本账:从按 Token 计费到单卡 GPU 服务器怎么选?
运维·服务器·开源·llm·agent
NocoBase2 小时前
程序员和软件还有前途吗 —— 从 NocoBase 收入再翻倍谈起
低代码·ai·开源·无代码·管理工具·内部工具·无代码开发平台
「、皓子~2 小时前
海狸IM 2.0 开放能力说明:OAuth2 接入与群推送机器人
人工智能·架构·electron·机器人·开源·交友·im
小柒儿3363 小时前
生物计算:AI与生物技术融合,重构医药研发与生命健康产业逻辑
人工智能·重构
workflower3 小时前
基于机器学习的设备故障预测分析方法
人工智能·算法·机器学习·设计模式·语言模型·自然语言处理·重构