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

标签 c# mongodb elasticsearch indexing

我在MongoDB中有一个要索引到Elasticsearch的集合。我在C#流程中执行此操作。该集合有1亿个文档,并且对于每个文档,我都必须查询其他文档,以便将规范化为Elasticsearch索引。

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

这仅在Elasticsearch中的映射更改时才发生,但是在上个月已经发生了两次。
有什么方法可以提高性能吗?

最佳答案

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

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

  • 使用新的映射创建新索引
  • 使用elasticsearch的内置功能将数据从旧索引重新索引到新索引。

  • 此后,将在新索引内使用新的映射为旧文档建立索引。与通过HTTP API从MongoDB导入相比,elasticsearch中的内置reindex可以更快地工作。

    如果要使用reindex,请不要忘记使用wait_for_completion参数(此参数在文档中进行了描述)。这将在后台运行重新索引。

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

    关于c# - 快速将整个MongoDB集合索引到Elastcticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45884287/

    相关文章:

    c# - 如何检查对象列表是否包含具有指定属性的对象

    MongoDb:在不同情况下的范围内搜索值

    javascript - 如何在 Mongoose.js 中应用字段类型验证而不会出现 CastError?

    json - Logstash:将不同的json字段发送到Elasticsearch中的不同类型

    elasticsearch - elasticsearch_dsl TypeError:index()缺少1个必需的位置参数: 'doc_type'

    elasticsearch - Elasticsearch 的用户界面

    C#调整大小时锚定控件 "shakes"

    C#6.0 字符串插值本地化

    c# - 按 X 分钟分组时间,以 X 分钟间隔拆分

    mongodb - 通过 id 集更新多个文档。 Mongoose