同步es,目前采用reindex模式,使用二分法快速查找同步,支持多种同步方式,单向同步、双向同步,定时单向,定时双向。

rz 848f6ac7b7 增加模式 1 年之前
.gitignore beed4e42d7 init 1 年之前
README.md f887527c1e init 1 年之前
config.yaml 848f6ac7b7 增加模式 1 年之前
config_n.yaml 848f6ac7b7 增加模式 1 年之前
config_o.yaml 848f6ac7b7 增加模式 1 年之前
config_on.yaml 848f6ac7b7 增加模式 1 年之前
go.mod 848f6ac7b7 增加模式 1 年之前
go.sum 848f6ac7b7 增加模式 1 年之前
main.go 848f6ac7b7 增加模式 1 年之前

README.md

synces

  • 目前采用reindex模式,使用二分法快速查找同步,支持多种同步方式,单向同步、双向同步,定时单向,定时双向。 后续考虑增加数据模式,对比缺失数据,进行保存同步

    实现功能

  • 同步同一个集群内es数据,同步不同es集群的数据

  • 只校验数据,不同步

  • 支持传递sql语句限定同步范围

  • id范围支持id段和时间段

  • id范围支持固定段、目标端最大id(建议只在定时模式使用)、二者取最小(建议只在定时模式使用)

  • 支持限定同步字段

  • 支持单向同步、双向同步、定时单向、定时双向

  • 定时同步模式支持 多组同步

  • 使用本地数据库记录正在同步的任务,定时检查任务数据

配置示例

参考config.yaml,配置好后直接编译运行,建议第一次运行synctest为true

同步sql示例

POST _reindex
{
  "source": {
    "index": "bidding",
    "query": {
      "bool": {
        "filter":[{"range":{"publishtime":{"lt":1694966400,"gte":1687017600}}}]
      }
    }
  },
  "dest": {
    "index": "bidding_temporary"
  }
}
  • sql:

    {
    "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "id": {
              "gt": "6509c7d80000000000000000",
              "lte": "650fbff80000000000000000"
            }
          }
        },
        {
          "bool": {
            "must_not": [
              {
                "terms": {
                  "toptype": [
                    "采购意向",
                    "拟建"
                  ]
                }
              }
            ]
          }
        }
      ]
    }
    }
    }