C# 快速将整个MongoDB集合索引到ElasticSearch中
我在MongoDB中有一个集合,我正在将其索引到Elasticsearch中。我是在一个C#过程中这样做的。该集合有1亿个文档,对于每个文档,我必须查询其他文档,以便将其反规范化为Elasticsearch索引 这一切都需要时间。从MongoDB读取是缓慢的部分(索引相对较快)。我正在尽可能高效地批处理来自MongoDB的数据,但这个过程需要2天以上的时间 只有当Elasticsearch中的映射发生变化时,才会发生这种情况,但在过去一个月内,这种情况已经发生了好几次。C# 快速将整个MongoDB集合索引到ElasticSearch中,c#,mongodb,
elasticsearch,indexing,C#,Mongodb,
elasticsearch,Indexing,我在MongoDB中有一个集合,我正在将其索引到Elasticsearch中。我是在一个C#过程中这样做的。该集合有1亿个文档,对于每个文档,我必须查询其他文档,以便将其反规范化为Elasticsearch索引 这一切都需要时间。从MongoDB读取是缓慢的部分(索引相对较快)。我正在尽可能高效地批处理来自MongoDB的数据,但这个过程需要2天以上的时间 只有当Elasticsearch中的映射发生变化时,才会发生这种情况,但在过去一个月内,这种情况已经发生了好几次。 有什么方法可以提高性能吗
有什么方法可以提高性能吗?当您更改映射时,可能不需要从头开始启动导入(我指的是从MongoDB导入)。请阅读以下内容: 当需要更改映射时,必须:
wait_for_completion
(文档中描述了此参数)。这将在后台运行重新索引
这种方法能解决您的问题吗?当您更改映射时,可能不需要从头开始导入(我指的是从MongoDB导入)。请阅读以下内容: 当需要更改映射时,必须:
wait_for_completion
(文档中描述了此参数)。这将在后台运行重新索引
这种方法能解决您的问题吗?您是否已经通过
\u bulk
API将这些数据导入Elasticsearch?如果我是对的,您将一些数据从mongo导入Elasticsearch。然后,当您需要更改elasticsearch映射时,您可以删除旧数据并使用更新的映射启动导入到新的elasticsearch索引?@BrunoHenrique它没有使用批量API,但实际上索引并不慢-它是从MongoDB读取的。@froosty这是正确的。如果映射已更改,唯一要做的就是删除索引并重新索引文档。至少这是我的理解。您是否已经通过\u bulk
API将这些数据导入Elasticsearch?如果我是对的,您将一些数据从mongo导入Elasticsearch。然后,当您需要更改elasticsearch映射时,您可以删除旧数据并使用更新的映射启动导入到新的elasticsearch索引?@BrunoHenrique它没有使用批量API,但实际上索引并不慢-它是从MongoDB读取的。@froosty这是正确的。如果映射已更改,唯一要做的就是删除索引并重新索引文档。至少这是我的理解。