一尘不染

MongoDB + Elasticsearch还是只有Elasticsearch?

elasticsearch

我们在那里有一个新项目,用于索引大量数据并提供实时数据。我还搜索了方面,全文,地理空间…

第一个原型是在MongoDB中建立索引,其次是在Elasticsearch中建立索引,因为我已经阅读到Elasticsearch不会对存储的文件应用校验和,并且该索引不能被完全信任。但是自从上一版本(在1.5版中)以来,现在有了一个校验和,我在猜测是否可以将Elasticsearch用作主要数据存储?除了Elasticsearch,使用MongoDB有什么好处?

我在Elasticsearch中找不到有关这些功能的最新答案

非常感谢


阅读 767

收藏
2020-06-22

共1个答案

一尘不染

谈论 使用 Mongo代替ES或与ES一起 使用的 参数:

  1. 用户/角色管理。

    • 内置在MongoDB中。可能无法满足您的所有需求,某处可能很笨拙,但是它存在并且在很早以前就已实现。
    • ES中唯一的安全性是shield。但它仅针对黄金/白金订阅供生产使用。
    • 架构图

    • ES是无模式的,但是它建立在之上Lucene并用编写Java。该工具的核心思想-索引和搜索文档,以这种方式工作需要索引一致性。在后端,所有文件应平放lucene索引,这需要对ES如何处理嵌套的文档和值以及如何组织索引以保持速度与数据完整性/一致性之间的平衡有所了解。使用ES要求您始终牢记有关架构的某些知识。即:由于无需预先放置对应的映射就可以对ES进行几乎所有索引,因此ES可以即时“猜测”映射,但有时做错了,有时隐式映射是有害的,因为一旦放置,就无法更改/ o重新索引整个索引。因此,最好不要将ES视为无模式存储,因为您可以花一些时间(这会很 痛苦 :)),而应将其视为模式密集型,至少在处理文档时如此,切成具体的领域。

    • 另一方面,Mongo几乎可以从您放入的任何东西中“咀嚼并没有碎屑”。而且大多数查询都可以正常工作,直到您记住Mongo从JavaScript角度如何处理数据。而且由于JS的类型很弱,因此您可以使用真正的无模式工作流(当然,如果需要的话)
    • 处理非表数据。

    • ES仅限于处理数据而不将其放入搜索索引。当您需要存储和检索一些额外的数据(与要搜索的数据相比)时,此解决方案就足够了。

    • MongoDB支持gridFS。这使您能够处理同一接口后面的大量数据。即,您可以将二进制数据存储在Mongo中,并从代码角度在同一界面内检索它们。
2020-06-22