将整个MongoDB集合快速索引到Elastcticsearch

时间:2017-08-25 15:00:28

标签: c# mongodb elasticsearch indexing

我在MongoDB中有一个集合,我正在将其编入Elasticsearch。我在C#进程中这样做。该集合有1亿个文档,对于每个文档,我必须查询其他文档,以便反规范化为Elasticsearch索引。

这一切都需要时间。从MongoDB读取是缓慢的部分(索引相对较快)。我正在尽可能高效地从MongoDB批量处理数据,但这个过程需要2天。

只有当Elasticsearch中的映射发生变化时才会发生这种情况,但这种情况在过去一个月中发生了几次。 有什么方法可以提高性能吗?

1 个答案:

答案 0 :(得分:0)

当您更改映射时,也许您不需要从头开始导入(我的意思是从MongoDB导入)。阅读:Elasticsearch Reindex API

当您需要更改映射时,您必须:

  1. 使用新映射创建新索引
  2. 使用elasticsearch的内置功能将旧索引中的数据重新索引到新索引中。
  3. 此旧文档将在新索引中使用新映射编制索引。弹性搜索中的内置reindex比通过HTTP API从MongoDB导入更快。

    如果您要使用reindex,请不要忘记使用参数wait_for_completion(文档中描述的此参数)。这将在后台运行reindex。

    这种方法会解决您的问题吗?