【问题标题】:Why use ElasticSearch with Mongo?为什么要在 Mongo 中使用 ElasticSearch?
【发布时间】:2014-01-29 05:44:43
【问题描述】:

我最近阅读了几篇关于mongodb 用于存储和elasticsearch 用于索引/搜索的组合的文章。我觉得我错过了一些东西。你为什么要走这条路而不是using mongo to index 数据? elasticsearch 带来什么好处,是否值得增加复杂性?

【问题讨论】:

    标签: mongodb elasticsearch


    【解决方案1】:

    ElasticSearch 实现了更多功能,例如将文本自定义拆分为单词、自定义词干提取、分面搜索等等。虽然 MongoDB 的(相当简单的)文本搜索可以做到这一点,但它不如 ElasticSearch 强大。

    如果您所做的只是在单个字段中查找单个字符串,那么 MongoDB 的普通查询系统将非常适合。如果您需要在多个字段中查找单词,那么 MongoDB 的文本搜索将起作用。如果您需要更多的东西,ElasticSearch 就是您的最佳选择。

    【讨论】:

      【解决方案2】:

      搜索引擎和数据库做一些根本不同的事情。一个好的搜索引擎(如 ElasticSearch)支持更精细和复杂的索引、构面、突出显示等。在 ElasticSearch 的情况下,您还可以“实时”获得回复。另一方面,搜索引擎不会返回与您的查询匹配的每个文档。相反,它将根据文档的匹配程度对文档进行评分,并返回得分最高的文档。当您查询 MongoDB 等数据库时,您应该期望它返回与您的查询匹配的everything

      可以将整个文档存储在 ElasticSearch 中,但这通常不是最佳解决方案。通常,您会将其配置为返回文档 ID,您可以使用它从数据库中获取文档。 MongoDB 是针对基于文档的存储优化的数据库。这就是为什么你听说人们一起使用它们的原因。

      编辑:

      发布时,它与建议相符,但可能不再如此。

      【讨论】:

      • 你能给出一个用例吗?我没有发现同时使用两个 nosql 来实现一些特殊的最佳解决方案?
      • 这是一个用例:blog.quarkslab.com/…
      【解决方案3】:

      Derick 的回答非常准确。这一切背后的问题是:

      您希望在应用程序中实现哪些功能?

      如果您依赖于大量文本中的大量搜索功能,那么 ElasticSearch 可能是一个不错的选择。如果您想拥有一个灵活的数据存储来处理复杂的即席查询,那么 Mongo 可能是一个不错的选择。如果您对数据存储有不同的要求,那么将两种工具组合在一起通常是一件好事,而不是实施各种变通方法以使其仅适用于一个数据存储。

      为工作选择合适的工具。

      【讨论】:

        猜你喜欢
        • 2021-05-09
        • 2019-02-04
        • 2016-06-08
        • 2014-04-19
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 2016-03-10
        相关资源
        最近更新 更多