上一篇我们通过 极限网关(INFINI Gateway) 进行了索引数据迁移,对索引迁移结果进行了初步且直观的校验,既对比索引的文档数是否一致。今天介绍个实实在在的数据比对方法,通过网关对比索引文档的内容在两个集群是否一致,此方法适用于 Elasticsearch、Easysearch、Opensearch。话不多说,就拿上次迁移的两个索引开整。
测试环境
| 软件 | 版本 |
|---|---|
| Easysearch | 1.12.0 |
| Elasticsearch | 7.17.29 |
| INFINI Gateway | 1.29.2 |
比对步骤
操作非常简单,拢共分两步:
- 准备网关配置
- 数据比对
比对实战
- 准备网关比对数据的配置
老样子去 github 拿就完了,戳这里。下载完之后,稍作修改.
修改文件开头的变量,两个 ENDPOINT 分别指向两个集群。
1 1 env: 2 2 LR_GATEWAY_HOST: 127.0.0.1:8001 3 3 LR_GATEWAY_API_HOST: 127.0.0.1:9000 4 4 ELASTICSEARCH_ENDPOINT: http://127.0.0.1:9200 5 5 ELASTICSEARCH_ENDPOINT2: http://127.0.0.1:9201 6 6 SUITES_NAME: index-docs-diff 7
修改集群资源相关的配置
1 36 elasticsearch: 2 37 - name: source 3 38 enabled: true 4 39 endpoints: 5 40 - $[[env.ELASTICSEARCH_ENDPOINT]] 6 41 basic_auth: 7 42 username: elastic 8 43 password: goodgoodstudy 9 44 10 45 - name: target 11 46 enabled: true 12 47 endpoints: 13 48 - $[[env.ELASTICSEARCH_ENDPOINT2]] 14 49 basic_auth: 15 50 username: admin 16 51 password: 14da41c79ad2d744b90c 17
pipeline 部分修改要对比的索引名称为 infinilabs 和 test1,是的一次对比两个。
1pipeline: 2 - name: index_diff_service 3 auto_start: true 4 keep_running: false 5 processor: 6 - dag: 7 mode: wait_all 8 parallel: 9 - dump_hash: #dump es1's doc 10 sort_document_fields: true 11 indices: "infinilabs,test1" 12 scroll_time: "10m" 13 elasticsearch: "source" 14# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2" 15# fields: "doc_hash" 16 output_queue: "source_docs" 17 batch_size: 1000 18 slice_size: 1 19# hash_func: "xxhash64" 20 - dump_hash: #dump es2's doc 21 indices: "infinilabs,test1" 22 scroll_time: "10m" 23# fields: "doc_hash" 24# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2" 25 batch_size: 1000 26 slice_size: 1 27# hash_func: "xxhash64" 28 elasticsearch: "target" 29 output_queue: "target_docs" 30
- 执行数据比对
1# 数据比对的配置文件名为 index-diff.yml 2./gateway-mac-arm64 -config index-diff.yml 3
比对结果显示, infinilabs 和 test1 两个索引的数据在两个集群一致。如果数据不一致会是什么情况呢?这个任务交给屏幕前的你了,有问题欢迎找我交流。
关于极限网关(INFINI Gateway)
INFINI Gateway 是一个开源的面向搜索场景的高性能数据网关,所有请求都经过网关处理后再转发到后端的搜索业务集群。基于 INFINI Gateway,可以实现索引级别的限速限流、常见查询的缓存加速、查询请求的审计、查询结果的动态修改等等。
官网文档:docs.infinilabs.com/gateway
开源地址:github.com/infinilabs/…
《如何使用 INFINI Gateway 对比 ES 索引数据》 是转载文章,点击查看原文。
