如何使用 INFINI Gateway 对比 ES 索引数据

上一篇我们通过 极限网关(INFINI Gateway) 进行了索引数据迁移,对索引迁移结果进行了初步且直观的校验,既对比索引的文档数是否一致。今天介绍个实实在在的数据比对方法,通过网关对比索引文档的内容在两个集群是否一致,此方法适用于 Elasticsearch、Easysearch、Opensearch。话不多说,就拿上次迁移的两个索引开整。

测试环境

软件 版本
Easysearch 1.12.0
Elasticsearch 7.17.29
INFINI Gateway 1.29.2

比对步骤

操作非常简单,拢共分两步:

  1. 准备网关配置
  2. 数据比对

比对实战

  1. 准备网关比对数据的配置

老样子去 github 拿就完了,戳这里。下载完之后,稍作修改.

修改文件开头的变量,两个 ENDPOINT 分别指向两个集群。

plain 复制代码
  1 env:
  2   LR_GATEWAY_HOST: 127.0.0.1:8001
  3   LR_GATEWAY_API_HOST: 127.0.0.1:9000
  4   ELASTICSEARCH_ENDPOINT: http://127.0.0.1:9200
  5   ELASTICSEARCH_ENDPOINT2: http://127.0.0.1:9201
  6   SUITES_NAME: index-docs-diff

修改集群资源相关的配置

plain 复制代码
 36 elasticsearch:
 37   - name: source
 38     enabled: true
 39     endpoints:
 40       - $[[env.ELASTICSEARCH_ENDPOINT]]
 41     basic_auth:
 42       username: elastic
 43       password: goodgoodstudy
 44
 45   - name: target
 46     enabled: true
 47     endpoints:
 48       - $[[env.ELASTICSEARCH_ENDPOINT2]]
 49     basic_auth:
 50       username: admin
 51       password: 14da41c79ad2d744b90c

pipeline 部分修改要对比的索引名称为 infinilabs 和 test1,是的一次对比两个。

plain 复制代码
pipeline:
  - name: index_diff_service
    auto_start: true
    keep_running: false
    processor:
    - dag:
        mode: wait_all
        parallel:
          - dump_hash: #dump es1's doc
              sort_document_fields: true
              indices: "infinilabs,test1"
              scroll_time: "10m"
              elasticsearch: "source"
#              query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"
#              fields: "doc_hash"
              output_queue: "source_docs"
              batch_size: 1000
              slice_size: 1
#              hash_func: "xxhash64"
          - dump_hash: #dump es2's doc
              indices: "infinilabs,test1"
              scroll_time: "10m"
#              fields: "doc_hash"
#              query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"
              batch_size: 1000
              slice_size: 1
#              hash_func: "xxhash64"
              elasticsearch: "target"
              output_queue: "target_docs"
  1. 执行数据比对
plain 复制代码
# 数据比对的配置文件名为 index-diff.yml
./gateway-mac-arm64 -config index-diff.yml

比对结果显示, infinilabs 和 test1 两个索引的数据在两个集群一致。如果数据不一致会是什么情况呢?这个任务交给屏幕前的你了,有问题欢迎找我交流。

关于极限网关(INFINI Gateway)

INFINI Gateway 是一个开源的面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway,可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。

官网文档:https://docs.infinilabs.com/gateway

开源地址:https://github.com/infinilabs/gateway

相关推荐
苏州IT威翰德2 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
Linux-18742 小时前
分布式链路追踪系统之二进制安装skywalking
elasticsearch·云原生·skywalking·分布式链路追踪系统·应用程序性能监控
Miao121313 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
SeaTunnel3 小时前
从 Python Script 地狱到标准化数据集成框架
大数据·开发语言·python·程序员·代码·seatunnel
爱自由的代码工4 小时前
游戏沉默用户怎么激活?一套可执行的步骤、指标与复盘方法
大数据·游戏·游戏发行·游戏运营·游戏分发
miaowu3574 小时前
AI智能体推动数字化转型:从流程自动化到决策辅助的完整路线图
大数据·人工智能·自动化
阿里云大数据AI技术5 小时前
阿里云 Elasticsearch 日志采集与加工服务:让日志链路少一串组件,多一份稳定
人工智能·elasticsearch
互联网江湖5 小时前
珞石机器人:向左科技股,向右零部件制造商?
大数据·人工智能
CRMEB系统商城5 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
Leo.yuan5 小时前
数据仓库建设怎么做?从源数据到分析报表全流程讲清
大数据·分布式·spark