ES-MongoDB学习3_MongoDB数据同步到Elasticsearch中

MongoDB数据同步到Elasticsearch中

 

说明:为了解决MongoDB慢查询以及对数据进行分析,将数据同步到Elasticsearch中。

测试环境各模块版本

MongoDB

Elasticsearch

MongoDB-connecter

Python

Pip

2.4.14

2.2.0

2.3

2.6.6

8.0.3

 

线上环境安装ES

安装过程

备注:ES下载地址:

https://www.elastic.co/downloads/elasticsearch

1.在本地下载elasticsearch 源码zip包 ;

2.scp上传压缩包到百度云相关机器上,并解压 ;

3.执行./elasticsearch-2.2.0/bin/elasticsearch;

具体安装过程,可以参照:

http://blog.csdn.net/wang_zhenwei/article/details/49361373

为ES安装插件

为方便使用安装head以及kopf插件(bigdesk在ES2.0以上版本已经不支持)

Head

Kopf

2.4.14

2.1.1

 

1.安装plugins的方式有:使用maven编译源码并放到_site中,并添加plugin-descriptor.properties进行安装(主要针对ES插件库无法找到该插件的情况)。

2.在ES插件库中能找到的情况下可以使用./elasticsearch-2.2.0/bin/plugin install head(插件名)这样的形式安装插件(幸运的是我们使用的这两个插件都能在ES插件库中找到)

3.使用./plugin installmobz/elasticsearch-head安装head插件, 使用./plugin installlmenezes/elasticsearch-kopf安装kopf插件。

4.安装成功后在./elasticsearch-2.2.0/plugins中查看插件的安装情况。

5.重启ES,并确认插件没有报错。

6.访问http://180.76.189.84:9200/_plugin/head/查看节点情况。

7.访问http://180.76.189.84:9200/_plugin/kopf/#!/cluster另一个查看节点信息的插件。

具体安装过程,可以参照:

http://blog.csdn.net/wang_zhenwei/article/details/50963976

 

安装mongo-connector

安装mongo-connector需要先安装python。

1.使用pip installmongo-connector安装mongo-connector。

2.mongo-connector使用需要使用到mongodb的oplog表,因此需要mongodb创建复制集。

MongoDB的具体安装过程,可以参照:

http://blog.csdn.net/wang_zhenwei/article/details/48267463

mongo-connector的具体安装过程还未整理。

 

创建ES集群

1.      在elasticSearch/config目录下修改elasticsearch.yml文件夹

#---------------------------------- Cluster -----------------------------------#

#Use a descriptive name for your cluster:#

#集群名称(集群内所有机器集群名称都要相同) 

cluster.name:cloudx_web_test1

##------------------------------------ Node------------------------------------##

Usea descriptive name for the node:## node.name: node-2

#节点名称 

node.name:node-1

#该节点是否可以被选为主节点 

node.master:true

#该节点是否存有数据 

node.data:true

#主分片数 

index.number_of_shards:3

#复制分片数 

index.number_of_replicas:1

#服务绑定ip地址  

network.host:192.168.0.57

#(ES2.X新增配置)集群内机器

ip   discovery.zen.ping.unicast.hosts:["192.168.0.57","192.168.0.58"]

#是否支持多播(默认true) 

discovery.zen.ping.multicast.enabled:true

 

2.分别在后台启动两个ES节点 nohup./elasticsearch &,默认日志存放文件在logs中。

3.访问http://180.76.189.84:9200/_plugin/kopf/#!/cluster可以查看集群的情况以及健康状态。

 

使用mongo-connector同步ES与mongodb中的数据

1.      使用

sudonohup mongo-connector --auto-commit-interval=0 -m 192.168.0.57:27017 -t192.168.0.57:9200 -d elastic_doc_manager -o /opt/mongo-connector.oplog -neventlogtest.T_EVENT_LOG &

进行数据同步(--auto-commit-interval=0表示实时同步将mongodb中的修改同步到ES,-o表示)

2.经测试300Wmongodb数据需要30分钟左右,因此线上1500W数据大约需要3小时,同步完后当mongo数据改变,也会立即提交到ES中。

ES查询代码实现

使用BoolQueryBuilder进行查询实现

1.使用filter返回精确查询信息(Query用于返回相关查询)

2.should类似于or操做

3.matchQuery相当于增加$and查询

4.existsQuery相当于增加$exists操作

5.mustNot相当于增加$not操作

代码省略

测试ES查询

发送与api/event-log相同的请求到api/event-log-counts中,进行测试(预期结果与event-log返回结果一致)。

 

原文来自:

https://www.gitbook.com/book/asdgh000/mongodb-elasticsearch-/details

https://asdgh000.gitbooks.io/mongodb-elasticsearch-/content/index.html

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值