Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB+;Elasticsearch还是仅Elasticsearch?_Mongodb_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nosql - Fatal编程技术网 elasticsearch,nosql,Mongodb,elasticsearch,Nosql" /> elasticsearch,nosql,Mongodb,elasticsearch,Nosql" />

MongoDB+;Elasticsearch还是仅Elasticsearch?

MongoDB+;Elasticsearch还是仅Elasticsearch?,mongodb,elasticsearch,nosql,Mongodb,elasticsearch,Nosql,我们在那里有一个新项目,用于索引大量数据并提供实时数据。我也有复杂的搜索方面,全文,地理空间 第一个原型是在MongoDB中建立索引,然后是Elasticsearch,因为我读到Elasticsearch不会对存储的文件应用校验和,索引不能完全信任。 但自从上一个版本(1.5版)以来,现在有了校验和,我猜我们是否可以使用Elasticsearch作为主要数据存储?除了Elasticsearch,使用MongoDB还有什么好处 我在Elasticsearch中找不到关于这些功能的最新答案 非常感谢

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

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

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


非常感谢

好吧,为正确的工作选择正确的工具。如果您需要搜索功能,如全文搜索、刻面等,那么没有什么能比得上成熟的搜索引擎。ElasticSearch(ES)或Solr只是一个选择问题

实际上,您可以将文档馈送(索引)到ES中进行搜索,然后从MongoDB或任何其他数据库获取特定条目的完整详细信息

我可以让你的任务更简单,看看我的开源作品,它使用MongoDB、ES、Redis和RabbitMQ,所有这些都集成在一个地方

请注意,该应用程序是在.Net C#中构建的。

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

  • 用户/角色管理

    • 内置MongoDB。可能不适合您的所有需求,可能在某些地方很笨拙,但它确实存在,并且在相当长的一段时间前就已经实现了
    • ES中唯一的安全性是。但它仅用于生产使用的黄金/白金订阅
  • 模式

    • ES是无模式的,但它构建在
      Lucene
      之上,并用
      Java
      编写。这个工具的核心思想是索引和搜索文档,这种方式需要索引的一致性。在后端,所有文档都应该安装在扁平的
      lucene
      索引中,这需要了解ES应该如何处理嵌套文档和值,以及应该如何组织索引以保持速度和数据完整性/一致性之间的平衡。使用ES需要您经常记住一些关于模式的事情。也就是说,由于您可以在不预先放置相应映射的情况下将几乎任何内容索引到ES,ES可以动态地“猜测”映射,但有时会出错,有时隐式映射是有害的,因为一旦放置,就无法通过重新索引整个索引来更改。因此,最好不要将ES视为无模式存储,因为您可以在某个时候使用rake(这会很痛苦:),而是将其视为模式密集型存储,至少在您处理文档时,可以将其分割为具体字段
    • 另一方面,Mongo可以“咀嚼并且不留下面包屑”,几乎任何你放进去的东西都可以。在您还记得Mongo将如何从JavaScript角度处理您的数据之前,您的大多数查询都可以正常工作。由于JS是弱类型的,所以您可以使用真正无模式的工作流(如果需要的话,当然可以)
  • 处理非表数据

    • ES仅限于在不将数据放入搜索索引的情况下处理数据。当您需要存储和检索一些额外的数据(与要搜索的数据相比)时,这个解决方案已经足够好了
    • MongoDB支持。这使您能够在同一接口后面处理大量数据。也就是说,您可以在Mongo中存储二进制数据,并从代码的角度在同一接口中检索它

  • 我最近在公司开发了一个功能

    我们希望执行一些搜索,并根据结果在多个因素和条件下的相关性对结果进行排序

    所以在我的应用程序中,我们已经使用MongoDB作为Db

    所以在ElasticSearch index上,我从MongoDB导出了一些我想要执行搜索和筛选的字段。 因此,根据所需的条件,我还准备了mongo查询和elasticsearch查询,并执行了搜索。然后我根据需要对结果进行过滤和排序。 整个流程的设计方式如下:, 即使ES出现错误,mongo也会获取记录。 如果我从ES得到结果,mongo结果将取决于ES结果。 这就是我如何结合使用mongo和ES的方法

    另外,不要忘记正确处理所有更新、删除和插入新记录


    我只想知道,结果对我来说真的很好。

    在生产中使用Elasticsearch后,我可以总结出以下几条线索:

    • 我们通过反向代理将我们的Elasticsearch集群安全化,该代理在请求时检查客户端证书的真实性,然后再让查询进入:它证明了无论如何都有多种方式来添加身份验证。(如果您需要更精确的安全性,比如使用角色,那么可以添加一些插件来管理权限)
    • Elasticsearch映射和设置(调整)是在开始生产之前需要完全理解的非常重要的概念,要想快速了解所有内容的工作原理并不容易
    • 集群和水平扩展非常灵活,易于设置
    • 套件工具(Kibana、beats等)是收集日志、公开关键数据等的非常方便的方法
    • 搜索功能非常先进,当您稍微掌握全文搜索的工作原理(模糊、增强、评分、词干、标记器、分析器等等)时,您真的可以做出惊人的事情
    • API有点分散,没有独特的方法来实现某些东西。有些API是真正可以使用的WTF,比如批量插入API:您需要传递二进制数据,使用JSON格式(ofc不要忘记行尾字符),并多次重复某些字段。这是非常冗长的,我想这是我们在p