使用 Elasticsearch 作为主数据库而不是 MongoDB 的场景

use*_*116 2 mongodb elasticsearch

我们目前正在将 MongoDB 用于我们的“大规模数据”产品之一。简单介绍一下,我们使用 Mongo 来存储大量社交媒体数据,例如推文/帖子/主题标签等。所以用例是社交媒体分析。到目前为止,我们在使用 MongoDB 时面临的唯一问题是全文搜索能力和聚合性能。

文档数量约为 2500 万,我们在单个实例上使用它。此外,我们的大部分分析都是在整个集合上进行的(我们通常没有很多过滤器来减少分析数据集)。最近我们开始研究弹性搜索。它是一个漂亮的工具,搜索速度非常快。因此,我们考虑的一种方案是将其用作 Mongo 之上的搜索层。

但是,经过评估,我们发现 ES 也具有强大的分析能力,尤其是在聚合方面。我们的问题是使用 ES 作为唯一的数据存储(作为 Mongo 的替代品)是否是个好主意。我们在搜索层而不是分析工具方面看到了 ES 的大部分吸引力。在分析能力中使用 ES 是否有任何缺点。简而言之,Mongo 在哪些方面比 ES 做得更好?

xer*_*raa 5

在功能方面,Elasticsearch 应该很好地涵盖了您。过滤器、查询和(流水线)聚合可以完成 MongoDB 所做的一切,甚至更多。

我会主要注意两种解决方案提供的弹性:Elasticsearch 不是设计的数据库,在某些情况下可能会发生“坏”的事情;尽管它们在弹性页面上有详细记录。使用版本 2.3 甚至 5(目前处于 alpha 阶段) 最新的稳定版本提供了一个非常稳定的基础,我在现实世界的应用程序(不是实验室场景)中看到的所有数据丢失问题都是由于配置不当造成的。

免责声明:我为 Elastic 工作。