MongoDB + Elasticsearch还是只有Elasticsearch?

use*_*777 33 mongodb nosql elasticsearch

我们在那里有一个新项目,用于索引大量数据并提供实时数据.我还有facet,全文,地理空间的复杂搜索...

第一个原型是在MongoDB中进行索引,接下来是Elasticsearch,因为我已经读过Elasticsearch没有对存储的文件应用校验和,并且索引不能完全信任.但是自上一版本(版本1.5)以来,现在有一个校验和,我猜我们是否可以将Elasticsearch用作主数据存储?除了Elasticsearch之外,使用MongoDB有什么好处?

我无法找到有关Elasticsearch中的功能的最新答案

非常感谢

Sla*_*lam 46

谈论使用 Mongo而不是/与ES一起使用的参数:

  1. 用户/角色管理.

    • 内置于MongoDB中.可能不适合您的所有需求,可能在某个地方笨拙,但它存在并且很久以前就实现了.
    • ES中唯一的安全性是shield.但它仅用于Gold/Platinum订阅以供生产使用.
  2. 架构

    • ES是无模式的,但它建立在上面Lucene并写入Java.这个工具的核心思想 - 索引和搜索文档,并以这种方式工作需要索引一致性.在后端,所有文档都应该安装在平面lucene索引中,这需要了解ES应如何处理嵌套文档和值,以及如何组织索引以保持速度和数据完整性/一致性之间的平衡.使用ES需要您不断地记住有关模式的一些内容.也就是说:因为你可以将几乎任何东西都索引到ES而不预先提供相应的映射,ES可以在运行中"猜测"映射,但有时会做错,有时隐式映射是邪恶的,因为一旦它放入,它就无法改变w/o重新索引整个索引.因此,最好不要将ES视为无模式存储,因为你可以踩一下rake一段时间(这将是痛苦 :)),而是将其视为架构密集型,至少在你使用文档时,可以被切成混凝土领域.
    • 另一方面,Mongo可以从你放入的几乎任何东西中"咀嚼并且不留任何碎屑".大多数你的查询都可以正常工作,直到你还记得Mongo将如何从JavaScript角度处理你的数据.由于JS是弱类型的,您可以使用真正无模式的工作流程(当然,如果您需要)
  3. 处理非表格式数据.

    • ES仅限于处理数据而不将其放入搜索索引.当您需要存储和检索一些额外数据(与您要搜索的数据相比)时,此解决方案就足够了.
    • MongoDB支持gridFS.这使您能够在同一界面后处理大块数据.即,您可以从代码的角度在Mongo中存储二进制数据并在同一界面中检索它.