当前位置: 首页 > 面试题库 >

MongoDB + Elasticsearch还是只有Elasticsearch?

段干祺
2023-03-14
问题内容

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

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

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

非常感谢


问题答案:

谈论 使用 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中,并从代码角度在同一界面内检索它们。


 类似资料:
  • 如果我只运行几个线程,其中一些线程调用静态函数,而另一些线程创建新实例。我希望在每次对的调用中获得当时实例的实际数量。 代码中的两个选项有区别吗? 如果我锁定“”,这是否意味着在构造函数退出synchronized块之前,我不能调用(假设我没有在getCount()上编写synchronize)。 如果我在代码中的某个地方执行同步块,它是只锁定同步块还是锁定所有“”代码? 从这里开始编辑:谢谢大家

  • 本文向大家介绍ElasticSearch是否有架构?相关面试题,主要包含被问及ElasticSearch是否有架构?时的应答技巧和注意事项,需要的朋友参考一下 ElasticSearch可以有一个架构。架构是描述文档类型以及如何处理文档的不同字段的一个或多个字段的描述。Elasticsearch中的架构是一种映射,它描述了JSON文档中的字段及其数据类型,以及它们应该如何在Lucene索引中进行索

  • 令人困惑的是,“background”也经常被用来简单地表示“Android:src使用的照片的‘背景颜色’”。 说我有。 我将更改SetColorFilter。 但是背景只是一个普通的按钮背景,实际上带有一些透明度等等。 所以我想不影响背景;我只会为不同的按钮改变“大点的颜色”。 请注意:(一)由于setColorFilter的微妙之处,从测试中很难确定;(二)我在doco中真的找不到这一点(对

  • 问题内容: 我想将数据同步到,我读了很多关于Elasticsearch River插件和mongo连接器的文章,但是不推荐使用mongo 4和elasticsearch 7! 作为专有软件,我想使用它来同步两者…任何人都知道如何做到这一点? 问题答案: 您可以将MongoDB和Elasticsearch与Logstash同步;实际上,同步是Logstash的主要应用之一。安装Logstash之后,

  • 我有3个节点的ElasticSearch集群和3个节点的MongoDb ReplicaSet。我正在尝试使用以下配置设置river: 此命令运行良好,但ElasticSearch不会尝试从MongoDb获取数据。我更新了记录,但没有帮助。 是否有特殊的配置来连接到副本集?我在单个ES和单个MongoDb上尝试过这种配置,效果很好。

  • 我有这三个字符串: 我如何检查这些字符串中哪一个只包含字母还是只包含数字(用R表示)? 只能在字母检查中为TRUE 它对很有效,但对也很有效,这是我不想要的。 提前谢了。