我真的是编程新手,但我正在研究它。我有一个我不知道如何解决的问题。我在mongoDB中收集了许多文档,并且正在使用Elasticsearch查询字段。问题是我想将搜索的输出存储回mongoDB中,但存储在不同的DB中。我知道我必须创建一个临时数据库,该数据库必须随每个搜索结果进行更新。但是该怎么做呢?或者给我阅读文档,以便我可以学习。我将非常感谢您的帮助!
Mongo本身不支持“临时”集合。
这里要做的典型事情是实际上不将所有输出结果写入另一个数据库,因为这完全没有意义,因为Elasticsearch会自己进行缓存,因此您不需要顶层任何层。
同样,由于IO方面的考虑,将说1万条记录的结果集写入Mongo或另一个DB通常是个坏主意。
对于您所说的内容,有一个功能请求: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用作存储引擎来完成其他任务。