大家好!在前面的文章中,我们已经详细介绍了如何通过 Logstash 和 Canal 工具实现 MySQL 数据向 Easysearch 的迁移。如果您正在使用 MongoDB 作为数据存储,并希望将其数据迁移到 Easysearch 中,这篇指南或许能为您提供一些帮助。
为了实现 MongoDB 与 Easysearch 之间的数据迁移,Logstash 依然是一个非常成熟稳定的工具选择。在接下来的内容中,我们将介绍如何利用 Logstash 实现 MongoDB 到 Easysearch 的数据迁移。
MongoDB
MongoDB 作为一款功能强大的 NoSQL 数据库,与主流数据库系统一样支持 JDBC 连接方式。这意味着我们可以通过 Logstash 的 JDBC 插件实现与 MongoDB 的连接,进而将数据迁移至 Easysearch。
测试数据如下

Logstash
使用 JDBC 连接数据库,要下载对应数据库的 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.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 进行数据迁移。

使用 INFINI Console 查看索引数据。
