写点什么

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

作者:极限实验室
如何使用 INFINI Gateway 对比 ES 索引数据

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

测试环境



比对步骤

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


  1. 准备网关配置

  2. 数据比对

比对实战

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


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


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


  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
复制代码


修改集群资源相关的配置


 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,是的一次对比两个。


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. 执行数据比对


# 数据比对的配置文件名为 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


发布于: 12 分钟前阅读数: 10
用户头像

简单、易用、极致、创新 2021-11-22 加入

极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。

评论

发布
暂无评论
如何使用 INFINI Gateway 对比 ES 索引数据_Gateway_极限实验室_InfoQ写作社区