【发布时间】:2015-04-21 10:49:22
【问题描述】:
我正在使用 mongo-connector python 工具设置一个新的 ElasticSearch 实例。该工具正在运行,但仅从 mongodb oplog 导入了大约 100k 条目。
但是,我的集合包含数百万条记录...有没有办法通过 oplog 传递每个集合中的所有记录而不以任何方式修改记录?
【问题讨论】:
-
您可以手动直接插入到 oplog,但更好的选择是制作一个导入器脚本,该脚本实际上会将所有旧记录导入 ES
-
差不多,您可以使用 API elasticsearch.org/guide/en/elasticsearch/reference/current/… 直接用您喜欢的语言(即 PHP)将它们编入索引,只需几百万就可以快速完成
-
@Sammaye:仅供参考,您绝对不应该尝试在 MongoDB oplog 中手动插入或更新条目。该格式是复制的内部格式,弄乱 oplog 数据可能会导致意外结果(即复制中断和/或数据丢失)。
-
我建议按照Resync the Connector 的说明进行操作(这将转储和重新索引所有数据,然后开始跟踪 oplog)。 ElasticSearch API 也是一种替代方法,但与按预期使用连接器相比可能需要额外的工作。
-
@Stennie tbh 我会说完全依赖 oplog 同步到 ES 是个坏主意,在适当的环境中我至少可以想到 2 个问题,但除此之外它是一个看了一眼,我很快转而提到了另一种方法
标签: mongodb elasticsearch mongoid mongodb-query