近期的工作是清洗存储大量的日志,我一直也有 1 楼的想法,数据存 mongo,再用 ES 做索引,然而实际使用日志结果时,我发现我几乎用不到 mongo,于是开始思考 mongo 在我的使用场景中的意义是什么,如果只存 ES 会有哪些问题?
iConnect
2020-03-20 12:23:40 +08:00
es 时间久了会产生大量冗余数据,影响检索销量,这个时候可以 reindex,甚至从源一次,这个情况只有 es 就麻烦了
ddup
2020-03-20 12:27:53 +08:00
确实有项目数据库和搜索都用的 ES,比如 Exceptionless
dtsdao
2020-03-20 12:48:47 +08:00
我觉得直接存 ES 就挺好,数据迁入迁出好麻烦的
chendy
2020-03-20 13:35:32 +08:00
去年尝试过,感觉 es 的数据更新 api 比较难受,批量操作也难受,还是只做搜索吧 最后回到了 mongodb,订阅 change-stream 同步进 es 就舒服多了
sadfQED2
2020-03-20 13:45:48 +08:00
如果你项目没有强实时性的要求,可以把 es 当成 nosql 来用。我们公司目前就有这样用,亿级别数据,也没任何问题。但是!有个前提,es 有索引更新延时,也就是说,你新数据在索引没更新前,是搜索不到的。如果你业务对没有要求,完全可以拿 es 存。
但是 only es 的话,可能开发过程中偶尔遇到强实时性的要求的时候,程序会非常麻烦
sadfQED2
2020-03-20 13:46:44 +08:00
最推荐的架构还是 DB 同步 ES,或者 DB ES 双写,ES 只做搜索功能
Mithril
2020-03-20 13:49:42 +08:00
官方并不建议这么做。 之前看过官方的说法:确实有很多人把 ES 作为主要数据存储,而且他们也做了很多工作保证数据不会丢失,但是 ES 本身设计并不是为了持久化数据用的。 多加个 MongoDB 只是为了保险,用不用其实取决于你的数据有没有那么重要。日志这种东西个人觉得没那么重要,直接 ES 就好了。 如果觉得担心,你可以直接把数据存文件,顺序写入性能不会差的。