网上有许多elasticsearch和mongodb之间通过elasticsearch的mongodb-river插件建立管道的文章,这些文章都有一个要求:需要一个mongodb的集群,也就是需要至少两个mongodb的实例。原因也好理解:river插件是通过读取mongodb的oplog.rs这个表来同步mongodb中的更新的,而要oplog.rs只有在replicset中才能生效。所以本文的重点也就变成了如何在一个mongodb的实例下搭建replicset环境了。
总之,三个步骤:
- 搭建单机replicSet
- 安装mongodb-river插件
- 验证
搭建replicSet
这个问题其实网上已经有现成的方案了,参见:http://loosexaml.wordpress.com/2012/09/03/how-to-get-a-mongodb-oplog-without-a-full-replica-set/
不能访问这个地址的,我这里摘录关键的两步:
1、配置/etc/mongodb.conf
增加两个配置:
replSet=rs0 #这里是指定replSet的名字 oplogSize=100 #这里是指定oplog表数据大小(太大了不支持)
2 初始化replicSet
rs.initiate( {"_id" : "rs0", "version" : 1, "members" : [ { "_id" : 0, "host" : "127.0.0.1:27017" } ]})
我在做这个设置的时候,碰到了点问题:
com.mongodb.ConnectionStatus$UpdatableNode update WARNING: Server seen down: /127.0.1.1:27017 - java.io.IOException - message: couldn't connect to [/127.0.1.1:27017] bc:java.net.ConnectException: Connection refused
但是从mongo shell上和程序代码上都能连接到mongodb,不知道具体原因,换了最新的mongodb 2.2.3问题解决(没有更换任何配置文件和数据文件)。
结果
搭建好replicSet之后,在mongo shell中的提示符会变成:
rs0:PRIMARY>
安装 mongodb-river插件
插件在此:
https://github.com/richardwilly98/elasticsearch-river-mongodb
基本上可以分为两步:
- 准备jar包
- 创建meta信息
1、两个必须的jar包(elasticsearch-river-mongodb-1.6.2-SNAPSHOT.jar和mongo-java-driver-2.10.1.jar)放到es_home/plugins/mongodb_river
其中mongodb_river是自定义的一个名字。
2、创建meta信息
curl -XPUT "localhost:9400/_river/mongodb_application/_meta" -d ' { "type": "mongodb", "mongodb": { "host": "localhost", "port": "27017", "db": "application", "collection": "page" }, "index": { "name": "application", "type": "page"} } '
主要分为三个部分:
type:river的类型,也就是“mongodb”
mongodb:mongodb的连接信息
index:elastisearch中用于接收mongodb数据的index和“type”。
验证结果
curl "http://localhost:9400/_river/mongodb_application/_meta"
验证
在mongo里插入一条数据,在对应的elasticsearch里就会有相应的数据。
一个问题
在river建立之后的数据变动会体现在elasticsearh里,但是river建立前的数据变动因为没有在oplog表里,所以不能被同步。我的解决方案是,遍历一次需要导出的表,重新插入到另外一个表里,然后将river指定到这个新表,这样新表的变动就可以全部体现在oplog里了。
遍历mongodb的表可以通过cursor来实现:
var myCursor = db.page.find( { }, {html:0} ); myCursor.forEach(function(myDoc) {db.application.save(myDoc); });
其中page是老表,application是新表(database名字也叫application,不要弄错)
相关推荐
mv /data/elasticsearch-river-mongodb/target/releases/elasticsearch-river-mongodb-2.0.5.zip . cp -r /data/elasticsearch-river-mongodb/src/site/* /usr/share/elasticsearch/plugins/mongodb/_site/ ...
基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的技术分享平台源码(课程大作业项目).zip基于SpringBoot+Elasticsearch+MongoDB开发的...
注意MongoDB,ElasticSearch和MongoDB River插件的版本 5.安装ElasticSearch 下载ElasticSearch: ://www.elasticsearch.org/overview/elkdownloads/ 检查MongoDB版本是否匹配ElasticSearch和MongoDB Rive
jar包,官方版本,自测可用
MongoDB和Elasticsearch是两种广泛应用的数据库系统,它们各自在不同的场景下有着出色的表现。MongoDB是一款NoSQL文档型数据库,以灵活的数据模型、高可用性和可扩展性著称,适合处理大规模非结构化数据。而Elastic...
shell+mysql+nginx+linux+docker+ansible+Elasticsearch+MongoDB+爬虫+Git
在大数据处理和搜索领域,Elasticsearch(ES)和HBase都是非常重要的工具。Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎,适用于全文检索、结构化检索以及分析。而HBase是基于Apache Hadoop的数据...
Windows环境下实现MongoDB与Elasticsearch数据自动同步是大数据和搜索领域经常需要进行的操作,可以帮助用户实时将数据库中的数据变化同步到搜索引擎中,以便快速检索。本文介绍如何使用Python 2.7.14,MongoDB ...
本文将详细介绍如何使用Python来实现MongoDB数据到ElasticSearch的同步,并探讨全量同步、增量同步和实时同步的实现方法,以及如何处理中间数据。 **Python与数据库交互** Python作为一种强大且易用的编程语言,...
MongoDB和Elasticsearch都是现代数据存储和搜索的流行选择,它们各自在不同的场景下有着出色的表现。然而,在实际的数据管理中,有时我们需要在这些系统之间进行数据迁移或同步,以便充分利用各自的优点。这就引出了...
实现功能 利用Scrapy框架和Xpath解析网页信息并抓取 Scrapy-redis实现分布式 分页抓取并存储到Mongodb数据库 使用Crawlera和随机UA突破反爬 通过elasticsearch同步Mongodb打造搜索引擎
《Elasticsearch River Neo4j 插件详解》 Elasticsearch River Neo4j 是一个专为 Elasticsearch 设计的开源项目,其主要功能是作为两者之间的桥梁,将数据从 Neo4j 图形数据库实时同步到 Elasticsearch 搜索引擎,...
4. **Elasticsearch**:Elasticsearch是一款开源的全文搜索引擎,基于Lucene,提供实时、分布式、高可用的搜索和分析能力。在社工库系统中,Elasticsearch可能用于对大量数据进行快速的全文搜索,帮助用户快速找到所...
CentOS7 下搭建多节点 Elasticsearch 集群 ...CentOS7 下搭建多节点 Elasticsearch 集群需要考虑到集群架构、安装和配置、配置文件、插件、Filebeat 和 Logstash、多节点的优势和部署、监控等多个方面。
Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,...
用于Meteor的ElasticSearch和MongoDB同步软件包。 它有什么作用? elasticsearch-sync软件包使您的mongoDB集合和弹性搜索集群保持同步。 它通过拖尾mongo oplog并将所有杂项操作复制到弹性搜索集群中而没有任何开销...
快速搭建elasticsearch6.5.4集群和Head插件,elasticsearch分别在window、linux的系统的安装部署教程,以及相关安装包,该踩得坑一一踏平。
在本文中,我们将详细讨论如何在Linux单机环境中搭建Elasticsearch (ES) 服务器,同时结合使用Elasticsearch Head插件进行管理。首先,我们需要安装Java Development Kit (JDK) 8,然后安装和配置Elasticsearch ...
Elasticsearch 7.12.1 是一个强大的开源全文搜索引擎,它基于 Lucene 库进行构建,提供了分布式、实时的搜索和分析引擎服务。这个版本的 Elasticsearch 针对性能和稳定性进行了优化,适用于大规模数据检索和分析场景...