我在MongoDB中有一个集合,我正在将其编入Elasticsearch。我在C#进程中这样做。该集合有1亿个文档,对于每个文档,我必须查询其他文档,以便反规范化为Elasticsearch索引。
这一切都需要时间。从MongoDB读取是缓慢的部分(索引相对较快)。我正在尽可能高效地从MongoDB批量处理数据,但这个过程需要2天。
只有当Elasticsearch中的映射发生变化时才会发生这种情况,但这种情况在过去一个月中发生了几次。 有什么方法可以提高性能吗?
答案 0 :(得分:0)
当您更改映射时,也许您不需要从头开始导入(我的意思是从MongoDB导入)。阅读:Elasticsearch Reindex API
当您需要更改映射时,您必须:
此旧文档将在新索引中使用新映射编制索引。弹性搜索中的内置reindex比通过HTTP API从MongoDB导入更快。
如果您要使用reindex,请不要忘记使用参数wait_for_completion
(文档中描述的此参数)。这将在后台运行reindex。
这种方法会解决您的问题吗?