跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • mongodb 和 elasticsearch 怎么配合使用
未分類
18 4 月 2021

mongodb 和 elasticsearch 怎么配合使用

mongodb 和 elasticsearch 怎么配合使用

資深大佬 : taomujian 5

mongodb 用来存储数据,elasticsearch 用做搜索引擎,看网上教程说,需要 mongodb 同步到 elasticsearch,这样的话用 mongodb 存储数据有啥意义呢?往各位大佬赐教

大佬有話說 (7)

  • 資深大佬 : Mithril

    – 你可能不是所有数据都需要扔到 ES 里面做检索,没必要的数据不要放进去。
    – 你有可能需要保证一定程度上的一致性。
    本质上 ES 就是个搜索引擎,你最好还是拿它当搜索引擎用。虽说一定程度上也可以当成 NoSQL 数据库,但实际使用的时候,除非你的应用场景非常合适,可以从需求上避开拿 ES 当数据库使用时的缺点,不然不要这么搞。

  • 主 資深大佬 : taomujian

    好的,谢谢解答

  • 資深大佬 : chendy

    mongodb 做主数据库,es 做搜索,把需要搜索的数据从 mongodb 同步到 es

  • 資深大佬 : jun0205

    可以用 https://github.com/rwynn/monstache 同步数据,monstache 可以自己写脚本同步需要的数据。

  • 資深大佬 : libook

    ES 和 MongoDB 的而应用场景不一样,定位也不一样,各自擅长和不擅长的事情也不一样。

    ES 不是数据库,没法保障数据一致性,因为存在刷新周期,所以你读取的数据总是上一次刷新的数据,如果在此期间有任何数据变化,你是拿不到最新的数据的,只能等下一个刷新周期。强一致性需求是数据库的强项,你查询 MongoDB 不可能返回一个过时的数据。

    传统业务数据库的索引机制有个限制,就是索引越多写性能越差,而且每一条索引都有很高的专能性,所适用的查询场景极其有限。举个例子,后台一个表单有 20 个查询字段,用户会随机选取其中任意数量的字段组合查询,每种组合出现的概率相当且要求查询速度都要很快;如果用业务数据库设计索引的话,理论上可能需要 20 的全组合那么多的索引,都别说 20 的全组合了,常见的业务数据库一个表上有 20 条索引就很让人头疼了。这就是搜索引擎的用武之地了。

    MongoDB 有一个 Change Streams 的机制,可以用程序监听表数据变化,这个机制可以用来同步 MongoDB 的数据到 ES,于是数据的写操作和强一致性读操作都在 MongoDB 上进行,不要求一致性的读操作(比如后台报表查询可以容忍几秒的数据滞后性的话)可以到 ES 里查。

  • 主 資深大佬 : taomujian

    感谢各位的解答

  • 資深大佬 : mensa23

    同步数据会是一个巨坑,如果你的 mongodb 数据结构会变,那就会导致 elasticsearch 每次同步数据都要建立新的 mapping 。所以建议只建立必要数据的 mapping,不要将所有数据都同步过去。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具