mongodb - 如何将查询输出存储在tempdb中?

标签 mongodb elasticsearch

我对编程确实很陌生,但我正在研究它。我有一个问题我不知道如何解决。 我在 mongoDB 中有文档集合,我正在使用 Elasticsearch 来查询字段。问题是我想将搜索的输出存储回 mongoDB 但在不同的数据库中。我知道我必须创建临时数据库,该数据库必须根据每个搜索结果进行更新。但如何做到这一点呢?或者给我阅读文档,以便我可以学习它。我将非常感谢您的帮助!

最佳答案

Mongo 本身不支持“临时”集合。

这里要做的一个典型的事情是实际上不要将整个结果输出写入另一个数据库,因为这完全没有意义,因为 Elasticsearch 会进行自己的缓存,因此您不需要顶部的任何层。

此外,由于 IO 问题,将 10k 条记录的结果集写入 Mongo 或其他数据库通常是一个坏主意。

您所说的内容有一个功能请求:https://jira.mongodb.org/browse/SERVER-3215但目前还没有计划。

示例

您可以得到一个结果表。

在此表中,您将有一个如下所示的文档:

{keywords: ['bok', 'mongodb']}

每次搜索并滚动浏览每个结果项时,您都会向该表写入一行,用该搜索结果中的关键字填充关键字字段。这将是每个搜索结果每个搜索结果列表每个搜索。最好的方法可能是在每个搜索结果出现时将其流式传输到 MongoDB。我从未编写过 Python 程序(尽管我希望学习),因此可以举一个伪示例:

var elastic_results = [{'elasticresult'}];
foreach(elastic_results as result){
    //split down the phrases in this result and make a keywords array
    db.results_collection.insert(array_formed_from_splitting_down_result); // Lets just lazy insert no need for batch or trying to shrink the amount of data to one go or whatever, lets just stream it in.
}

因此,当您处理结果时,您基本上只是尽可能快地批量插入,创建一种 MongoDB 输入“流”。它可以很好地做到这一点。

这将为您提供一个可分片的单词和语言动词列表,用于处理诸如 MR 之类的内容以及汇总有关它们的统计信息。

在不了解您的情况的情况下,这几乎是我的最佳答案。

这不使用临时表概念,而是使您的数据永久化,这听起来很好,因为您希望使用 Mongo 作为进一步任务的存储引擎。

关于mongodb - 如何将查询输出存储在tempdb中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11120060/

相关文章:

elasticsearch - ElasticSearch 脚本对于并发问题是否安全?

mongodb - 如何按插入时间对 Meteor 集合进行排序?

python - 匹配 EmbeddedDocumentList 中的 EmbeddedDocument

javascript - 使用 Angularjs 从 Mongodb 中获取数据

django - Elasticsearch端口9300 Django

elasticsearch - Elasticsearch 中多字段的条件聚合

elasticsearch - 如何在Elasticsearch中支持完全搜索匹配

javascript - 为什么在使用上下文 API 从 MongoDB 获取数据时,ReactJS 中会记录一个空数组?

node.js - JWT token 中应包含多少个人资料数据?

sql-server-2008 - 使用MSSQL River的Elasticsearch 0.90