【问题标题】:change stream in NodeJs for elasticsearch在 NodeJs 中更改流以进行弹性搜索
【发布时间】:2021-05-27 18:42:28
【问题描述】:

目的是同步elasticsearch上某些集合的字段。随着对 mongodb 的每一次更改,这也应该在 elasticsearch 上实现。我见过不同的包裹。例如河。不幸的是,它对我不起作用,所以我尝试不使用它。这是变更流的正确方法吗?

你怎么能更漂亮地解决这个问题?数据必须与 Elasticsearch 上的每个更改(插入、更新、删除)同步。对于多个集合,但每个集合都不同(每个集合只有某些字段)。不幸的是,我没有经验来解决这个问题,如果添加或删除集合或字段并不需要太多努力

    const res = await client.connect();
    const changeStream = res.watch();
  
    changeStream.on('change', (data) => {
     // check the change (is the chance in the right database / collection)
     // parse 
     // push it to elastic server
    });

希望你能帮助我,在此先感谢:)

【问题讨论】:

    标签: node.js mongodb elasticsearch elastic-stack changestream


    【解决方案1】:

    是的。它会起作用,但您必须处理以下情况

    1. 当你的 node js 进程在 mongodb 更新正在进行时出现故障。

      您可以使用恢复令牌并跟踪该令牌,因此一旦您 进程出现,它可以从那里恢复。

    2. 在每次更改时插入单个文档。

      这对于 elasticsearch 来说会不堪重负,并可能导致插入速度变慢,这 最终会导致 mongo 和 elastic 之间的同步滞后。所以最好收集 更改流中的多个文档并使用批量 API 操作插入。

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2012-10-26
      • 1970-01-01
      • 2017-10-10
      • 2021-07-10
      • 2013-07-02
      相关资源
      最近更新 更多