簡體   English   中英

將 NodeJs 中的 stream 更改為 elasticsearch

[英]change stream in NodeJs for elasticsearch

目的是同步 elasticsearch 上某些 collections 的字段。 隨着 mongodb 的每次更改,這也應該在 elasticsearch 上實現。 我見過不同的包裹。 例如河。 不幸的是,它對我不起作用,所以我嘗試不使用它。 這是變更流的正確方法嗎?

你怎么能更漂亮地解決這個問題? 數據必須與 Elasticsearch 上的每個更改(插入、更新、刪除)同步。 對於幾個 collections 但每個都不同(每個集合只有某些字段)。 不幸的是,我沒有經驗來解決這個問題,如果添加或刪除集合或字段不會花費太多精力

    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
    });

我希望你能幫助我,在此先感謝:)

是的。 它會起作用,但您必須處理以下情況

  1. 當您的節點 js 進程停止而 mongodb 更新正在進行時。

    您可以使用恢復令牌並跟蹤該令牌,因此一旦您的流程啟動,它就可以從那里恢復。

  2. 在每次更改時插入單個文檔。

    對於 elasticsearch 來說,它將不堪重負,並可能導致插入速度緩慢,最終導致 mongo 和 elastic 之間的同步滯后。 因此最好在更改 stream 中收集多個文檔並使用批量 API 操作插入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM