将数据从MongoDb同步到ElasticSearch的5种方法
弹性搜索(ES)是用于记录和分析数据的流行歌星, Mongodb是用于存储和查询数据的着名NoSQL数据库。随着我们的Web基础架构的改进,我们如何将数据从mongodb导出到ES以进行搜索或分析?建议您选择5种可能的解决方案。1.由Web服务器同步当我们使用Nodejs作为Web服务器容器时,我们可以使用Mongoosastic模块进行双面存储。当需要存储一个文档时, Mongoos...
弹性搜索(ES)是用于记录和分析数据的流行歌星, Mongodb是用于存储和查询数据的着名NoSQL数据库。随着我们的Web基础架构的改进,我们如何将数据从mongodb导出到ES以进行搜索或分析?建议您选择5种可能的解决方案。
1.由Web服务器同步
当我们使用Nodejs作为Web服务器容器时,我们可以使用Mongoosastic模块进行双面存储。当需要存储一个文档时, Mongoosastic可以将更改同时提交给mongo和ES。如下图所示:
这是参考链接: Mongoosastic。
优点是数据可以同时存储在mongo和ES中,并且缺点是可能在CUD操作效率中引起开销。当一种类型的db存储失败时,可能会生成不一致的数据。并且服务器框架不够灵活,无法进行数据库迁移。
2.手动将数据从Mongo加载到ES
一旦您想将mongo数据导出到另一个ES服务器, Transporter工具是同步数据的不错选择。 Transporter还可以从其他类型的数据存储中导出数据。参考链接是: Transporter。
重要的是要知道运输车只同步一次。工作完成后,运输工具即将结束。
3. ES的插件
ES的插件名为“elasticsearch-river-mongodb”,并在ES 1.x中广泛使用,但现在不推荐使用ES 2.x的河流机制。参考链接是 elasticsearch-river-mongodb。
4.用于logstash的JDBC输入插件
我们可以通过添加mongo输入和ES输出插件来利用logstash中 的 缓冲,输入,输出和过滤功能 来完成这项工作。
JDBC输入插件是其中一个选择,但它需要JDBC驱动程序支持。据我所知,mongo没有支持良好的JDBC驱动程序。一些试用版可以在Unity 或Simba中找到。
参考链接是:Logstash的JDBC插件
5. Mongo-ES连接器
mongo-connector是一个实时同步服务,作为python包。它创建了一个从mongodb集群到一个或多个目标系统的管道。它需要mongo以副本集模式运行,将mongo中的数据同步到目标然后关闭mongo oplog。它需要一个名为“elastic2_doc_manager”的包来向ES写入数据。流程图如下:
概括一下,必须要记住:mongo副本集,一个打开的端口和ES的IP,如果你使用ES 2.x则使用elastic2_doc_manager。
目前,我尚未准备好在Beats中获得任何官方支持。它将在未来。
所以这就是mongo-ES-sync的5种方式。
來源: https://www.linkedin.com/pulse/5-way-sync-data-from-mongodb-es-kai-hao
更多推荐
所有评论(0)