mongodb - ElasticSearch 和 Mongo

标签 mongodb elasticsearch

我认为这是一个非常新手的问题。我开始使用 ES 和 MongoDB,并且我正在尝试将数据移出 SQL DB 作为练习。 我不禁想知道,我会在 Mongo 中存储什么数据,在 ES 中存储什么数据?我可以将所有内容都存储在 ES 中吗?假设 数据负载,如价格趋势。

最佳答案

首先,MongoDB 是所谓的文档存储。这种概念的关键特征是存储模式动态文档:

  • 文档集合中的每条记录都可以有不同的结构
  • 每条记录的类型可以不同
  • 文档属性(列)可以有嵌套结构

它不是无模式的,它是动态模式(或灵活模式)。要了解这个概念,你可以在这里找到一个很棒的教程:https://docs.mongodb.org/manual/data-modeling/

MongoDB 是使用最广泛的文档存储 - 请参阅 http://db-engines.com/en/system/MongoDB .

它具有适用于大多数编程语言的“驱动程序”,可实现快速开发。您可以很快进入 Mongo,这里有很多教程和官方 Mongo 大学 - 对开发人员和 DBA 来说是一门很棒的类(class)。

简而言之,它支持索引、聚合、过滤器、负载平衡、分片、复制(副本集)等。数据以 BSON 格式 (http://bsonspec.org/) 存储和传输。

可以在以下官方引用中找到 MongoDB 与 RDBMS 概念的一个很好的比较:https://docs.mongodb.org/manual/reference/sql-comparison/

它有什么用?它支持敏捷开发,其中架构可以在一段时间内发生变化,尤其是基于表单的数据、用户生成的内容、基于位置的数据、用户配置文件等。它还可以存储大型文档(每个文件最多 16MB)。

现在,Elasticsearch 不是数据库。它是一个具有一些强大聚合功能的搜索引擎(https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html - 请务必查看 Metrics、Buckets 和 Pipeline 聚合)。

典型的 RDBSM 不适用于全文搜索或结构松散的数据。 ES 中的查询可以比任何数据库更快地返回结果(例如,RDBMS 中的秒数与 ES 中的毫秒数相比)。您需要记住,关键是设计好索引,并且它们会占用您的磁盘空间。

有一篇非常详细的文章比较了两者的性能,您可能会发现它很有用:http://blog.quarkslab.com/mongodb-vs-elasticsearch-the-quest-of-the-holy-performances.html .

您实际上可以成功使用两者 - MongoDB 将存储您的数据,其中 ES 将用作服务层(搜索、聚合等)。

关于mongodb - ElasticSearch 和 Mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778556/

相关文章:

mongodb - 按 id 限制更新/查找

list - Spring Roo - MongoDb -- 字符串列表

python - python和 Elasticsearch 更新错误

javascript - 有选择地展平嵌套 JSON 结构

php - MongoDB PHP : How do I get ObjectId with a JSON feed?(它是空白的)

mongodb - 将 MongoDB 转移到另一台服务器?

node.js - 多维数组的 Mongoose 模式解决方法

elasticsearch - 文本字段上的ElasticSearch Analyzer

elasticsearch - 在Elastic Search中将嵌套的单位数据存储在Kibana中进行分析是否更好?

Elasticsearch 范围查询字符串