--- title: "使用 Logstash 迁移 MongoDB 数据到 Easysearch" date: 2025-05-26 lastmod: 2025-05-26 description: "本文实战演示了使用 Logstash 将 MogoDB 数据迁移到 Easyearch 的过程。" tags: ["Easysearch", "Logstash", "MongoDB"] summary: "大家好!在前面的文章中,我们已经详细介绍了如何通过 Logstash 和 Canal 工具实现 MySQL 数据向 Easysearch 的迁移。如果您正在使用 MongoDB 作为数据存储,并希望将其中的数据迁移到 Easysearch 中,这篇指南或许能为您提供一些帮助。 为了实现 MongoDB 与 Easysearch 之间的数据迁移,Logstash 依然是一个非常成熟稳定的工具选择。在接下来的内容中,我们将介绍如何利用 Logstash 实现 MongoDB 到 Easysearch 的数据迁移。 MongoDB # MongoDB 作为一款功能强大的 NoSQL 数据库,与主流数据库系统一样支持 JDBC 连接方式。这意味着我们可以通过 Logstash 的 JDBC 插件实现与 MongoDB 的连接,从而将数据迁移至 Easysearch。 MongoDB 测试数据如下 Logstash # 本次测试使用的 Logstash 版本为 8.17.4 。使用 JDBC 连接 MongoDB 数据库,要下载对应数据库的 MongoDB JDBC Driver,下载后解压。 测试配置文件 mongodb_to_easysearch.conf input { jdbc{ jdbc_driver_class => "Java::com.wisecoders.dbschema.mongodb.JdbcDriver" jdbc_driver_library => "/usr/share/logstash/driver/mongojdbc4.8.3.jar" jdbc_user => "user" jdbc_password => "usertest" jdbc_connection_string => "jdbc:mongodb://localhost:27017/test" statement => "db." --- 大家好!在前面的文章中,我们已经详细介绍了如何通过 [Logstash](https://infinilabs.cn/blog/2023/sync-mysql-to-es-using-logstash/) 和 [Canal](https://infinilabs.cn/blog/2023/syncing-mysql-to-easysearch-using-canal/) 工具实现 MySQL 数据向 Easysearch 的迁移。如果您正在使用 MongoDB 作为数据存储,并希望将其中的数据迁移到 Easysearch 中,这篇指南或许能为您提供一些帮助。 为了实现 MongoDB 与 Easysearch 之间的数据迁移,Logstash 依然是一个非常成熟稳定的工具选择。在接下来的内容中,我们将介绍如何利用 Logstash 实现 MongoDB 到 Easysearch 的数据迁移。 ## MongoDB MongoDB 作为一款功能强大的 NoSQL 数据库,与主流数据库系统一样支持 JDBC 连接方式。这意味着我们可以通过 Logstash 的 JDBC 插件实现与 MongoDB 的连接,从而将数据迁移至 Easysearch。 **MongoDB 测试数据如下** {{% load-img "/img/blog/2025/migrating-data-from-mongodb-to-easysearch-using-logstash/1.png" "" %}} ## Logstash 本次测试使用的 Logstash 版本为 8.17.4 。使用 JDBC 连接 MongoDB 数据库,要下载对应数据库的 [MongoDB JDBC Driver](https://dbschema.com/jdbc-driver/mongodb.html?srsltid=AfmBOoqvO6uTMx1D_joyjjF9b74vAhm_fCCTgzlD09BvIIJ7clQnqJJS),下载后解压。 测试配置文件 **mongodb_to_easysearch.conf** ```plain input { jdbc{ jdbc_driver_class => "Java::com.wisecoders.dbschema.mongodb.JdbcDriver" jdbc_driver_library => "/usr/share/logstash/driver/mongojdbc4.8.3.jar" jdbc_user => "user" jdbc_password => "usertest" jdbc_connection_string => "jdbc:mongodb://localhost:27017/test" statement => "db.collection_test.find({},{'_id': false})" } } filter { mutate { rename => { "[document][tags]" => "tags" "[document][type]" => "type" "[document][summary]" => "summary" "[document][username]" => "username" "[document][content]" => "content" "[document][category]" => "category" "[document][created]" => "created" "[document][url]" => "url" "[document][id]" => "id" "[document][title]" => "title" } remove_field => [ "document" ] } } output { elasticsearch { hosts => ["https://127.0.0.1:9200"] index => "mongo_doc" manage_template => false ssl_verification_mode => none user => "admin" password => "admin-test" } } ``` + jdbc_driver_library:指定解压后的 jar 包地址 + statement:指定要迁移的 collection + filter:可选,默认会把源字段全部放到 document 字段下,改成符合 ES 的习惯 + index:迁移数据进入的索引 运行 Logstash 进行数据迁移。 {{% load-img "/img/blog/2025/migrating-data-from-mongodb-to-easysearch-using-logstash/2.png" "" %}} 使用 INFINI Console 查看索引数据。 {{% load-img "/img/blog/2025/migrating-data-from-mongodb-to-easysearch-using-logstash/3.png" "" %}} 如有问题,欢迎加我微信沟通。 {{% load-img "/img/blog/banner/about_yangf.png" "" %}}