2019独角兽企业重金招聘Python工程师标准>>>
Elasticsearch安装及自动同步mysql数据库数据
1 环境:
CentOS 6.4 x64
JDK1.8.0_45
2 Elasticsearch的安装
1 下载elasticsearch安装包:
https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.2.tar.gz
2 将下载完成的安装包上传到服务器的/usr/local文件夹下(上传地址根据个人习惯有所不同)
3 利用cd /usr/local命令进入local文件夹,利用tar -zvxf elasticsearch-1.5.2.tar.gz解压提取文件
4 输入./elasticsearch-1.5.2/bin/elasticsearch命令启动elasticsearch服务出现下图则说明安装成功
5 按ctrl+c停止服务,输入cd ./elasticsearch-1.5.2/config/命令进入elasticsearch的配置文件目录
6 输入vim ./elasticsearch.yml命令编辑elasticsearch的配置文件
6.1 找到Node节点
6.1.1 取消node.master: true和node.data: true的注释如下图
6.2 找到Network And HTTP节点
6.2.1 将network.host节点修改成elasticsearch所在的服务器的ip地址如下图
6.3 进入命令模式保存并退出配置文件
7 输入vim /etc/sysconfig/iptables修改防火墙配置文件,添加9200端口的入站规则并重启防火墙
8 输入../bin/elasticsearch命令重新启动elasticsearch服务出现下图
或者在浏览器中输入http://
则表示elasticsearch安装配置并且启动成功
3 Elasticsearch插件的安装
1 另开一个终端界面输入命令cd /usr/local/elasticsearch-1.5.2/进入elasticsearch目录
2 elasticsearch-headelasticsearchweb管理界面安装
2.1 输入./bin/plugin --install mobz/elasticsearch-head出现下图后表示插件安装成功(在线安装,如果本地安装则mobz/elasticsearch-head要替换成file:///<文件目录地址>)
3.2.2 在浏览器输入http://
:9200/_plugin/head/ 进入web管理页面3 elasticsearch-jdbc数据访问驱动插件的安装
3.1 输入./bin/plugin --install jdbc --urlhttp://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.5.0.5/elasticsearch-river-jdbc-1.5.0.5-plugin.zip出现下图则说明安装成功
4 MySQL JDBC驱动安装
4.1 输入curl -o mysql-connector-java-5.1.33.zip -L 'http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.33.zip/from/http://cdn.mysql.com/'命令下载mysqljdbc
4.2 输入cp ./mysql-connector-java-5.1.33/mysql-connector-java-5.1.33-bin.jar ./plugins/jdbc/命令将mysqljdbc移动到 plugins的jdbc目录下
4.3 输入chmod 644 ./plugins/jdbc/*命令修改jdbc文件夹下的所有文件的访问权限
3.5 重新执行./bin/elasticsearch命令使jdbc插件生效
4 在mysql中创建数据库、表并添加测试数据
4.1 在mysql数据库中建立一个test数据库并建立person表表结构如下
create table person
(idint ,
namevarchar(20),
sex char(1),
createdate timestamp);
4.2 插入数据
insert into person(id,name,sex) values(1,'zhangsan','F');
insert into person(id,name,sex) values(2,'zhaoliu','F');
4.3 创建用户并给用户分配访问数据库的对应表的权限
4.4 修改防火墙配置,添加3306端口的入站规则
5 创建elasticsearch索引并设置与mysql数据更新同步
5.1 输入curl -XPUT 'http://192.168.120.159:9200/test'命令建立elasticsearch索引
5.2 建立elasticsearch中的索引与数据库表的映射
curl -XPUT 'http://192.168.120.159:9200/test/person/_mapping' -d '
{
"person": {
"properties": {
"id": {
"type": "long",
"store": "yes"
},
"name": {
"type": "string",
"store": "yes"
},
"sex": {
"type": "string",
"store": "yes"
}
}
}
}'
5.3 建立任务定时获取mysql中的数据更新到elasticsearch中
curl -XPUT 'http://192.168.120.159:9200/_river/my_jdbc_river/_meta' -d '{
"type": "jdbc",
"jdbc": {
"driver": "com.mysql.jdbc.Driver",
"url": "jdbc:mysql://
"user": "
"password": "
"sql": "select id as _id,name,sex from person",
"index": "test",
"type": "person",
"bulk_size": 100,
"max_bulk_requests": 30,
"bulk_timeout": "10s",
"flush_interval": "5s",
"schedule": "0/5 * * * * ?"
}
}'
这样就建立了一个任务,定时每5秒从mysql中获取一次数据并将数据更新到elasticsearch中
如果想后台运行,则执行 ./elasticsearch -d
注:示例写的比较简单每次是过去表中所有的数据更新到elasticsearch中,这里可以进行增量式获取即每次只获取新增的或者修改过的数据,只需要在sql后面加一个时间就可以了,具体的可以参照elasticsearch官方说明文档。
本文档参照
http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-plugins.html
https://github.com/jprante/elasticsearch-jdbc