ElasticSearch&蒙戈

时间:2016-03-03 17:09:02

标签: mongodb elasticsearch

非常新手的问题我假设..我开始玩ES和MongoDB,我试图将数据从SQL DB中移出来作为练习。 我不能不知道,我会在Mongo中存储哪些数据以及在ES中存储什么数据?我可以把所有东西存放在ES吗?假设数据加载,如价格趋势。

2 个答案:

答案 0 :(得分:4)

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

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

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

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

它有"驱动程序"对于大多数编程语言,实现快速开发。你可以很快地潜入Mongo,有很多教程和官方的Mongo大学 - 这是开发人员和DBA的一个很好的课程。

简而言之,它支持索引,聚合,过滤器,负载平衡,分片,复制(副本集)等。数据以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 - 确保您查看指标,存储桶和管道聚合)。

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

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

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

答案 1 :(得分:0)

mongodb和ES之间存在很大差异。 MongoDB是一个数据库,其设计是为了在其中存储数据并对其进行查询,而elasticsearch是一个lucene基本索引器,您只应在其中为搜索索引数据,而不应信任elastisearch。即使你可以在弹性搜索中使用store:true,也不推荐使用它,我不会依赖于重要数据。