大家好!在前面的文章中,我們已經詳細介紹瞭如何通過 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.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 查看索引數據。可以看到目標數據已經成功遷移至 Easysearch。
作者:楊帆,極限科技(INFINI Labs)高級解決方案架構師、《老楊玩搜索》欄目 B 站 UP 主,擁有十餘年金融行業服務工作經驗,熟悉 Linux、數據庫、網絡等領域。目前主要從事 Easysearch、Elasticsearch 等搜索引擎的技術支持工作,服務國內私有化部署的客户。
原文:https://infinilabs.cn/blog/2025/migrating-data-from-mongodb-t...