找回密码
 立即注册
首页 业界区 安全 如何使用 INFINI Gateway 对比 ES 索引数据

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

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

软件版本Easysearch1.12.0Elasticsearch7.17.29INFINI Gateway1.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
复制代码
修改集群资源相关的配置
  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
复制代码
pipeline 部分修改要对比的索引名称为 infinilabs 和 test1,是的一次对比两个。
  1. pipeline:
  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"
复制代码

  • 执行数据比对
  1. # 数据比对的配置文件名为 index-diff.yml
  2. ./gateway-mac-arm64 -config index-diff.yml
复制代码
1.webp

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

2.png

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

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册