暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Elasticsearch安装及自动同步mysql数据库数据

阿桂的博客 2018-12-07
248

1 环境:

CentOS  6.4  x64

JDK  1.8.0_45

 

2 Elasticsearch的安装

2.1 下载elasticsearch安装包:

https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.2.tar.gz

2.2 将下载完成的安装包上传到服务器的/usr/local文件夹下(上传地址根据个人习惯有所不同)

2.3 利用cd /usr/local命令进入local文件夹,利用tar -zvxf elasticsearch-1.5.2.tar.gz解压提取文件

2.4 输入./elasticsearch-1.5.2/bin/elasticsearch命令启动elasticsearch服务出现下图则说明安装成功

2.5 按ctrl+c停止服务,输入cd ./elasticsearch-1.5.2/config/ 命令进入elasticsearch的配置文件目录

2.6 输入vim ./elasticsearch.yml命令编辑elasticsearch的配置文件

2.6.1 找到Node节点

2.6.1.1 取消node.master: true和node.data: true的注释 如下图

2.6.2 找到Network And HTTP节点

2.6.2.1 将network.host节点修改成elasticsearch所在的服务器的ip地址 如下图

2.6.3 进入命令模式保存并退出配置文件

2.7 输入vim /etc/sysconfig/iptables 修改防火墙配置文件,添加9200端口的入站规则并重启防火墙

2.8 输入../bin/elasticsearch命令重新启动elasticsearch服务出现下图

或者在浏览器中输入http://<ip>:9200出现下图

则表示elasticsearch安装配置并且启动成功

 

3 Elasticsearch插件的安装

3.1 另开一个终端界面 输入命令cd /usr/local/elasticsearch-1.5.2/进入elasticsearch目录

3.2 elasticsearch-head  elasticsearch  web管理界面安装

3.2.1 输入./bin/plugin --install mobz/elasticsearch-head出现下图后表示插件安装成功(在线安装,如果本地安装则mobz/elasticsearch-head要替换成file:///<文件目录地址>)

3.4 MySQL JDBC驱动安装

3.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/'命令下载mysql jdbc

3.4.2 输入cp ./mysql-connector-java-5.1.33/mysql-connector-java-5.1.33-bin.jar ./plugins/jdbc/ 命令将mysql jdbc移动到 plugins的jdbc目录下

3.4.3 输入chmod 644 ./plugins/jdbc/* 命令修改jdbc文件夹下的所有文件的访问权限

3.5 重新执行./bin/elasticsearch命令使jdbc插件生效

4 在mysql中创建数据库、表并添加测试数据

4.1 在mysql数据库中建立一个test数据库并建立person表   表结构如下

create table person

 (id int ,

 name varchar(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://<ip>/test",

        "user": "<username>",

        "password": "<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中,这里可以进行增量式获取即每次只获取新增的或者修改过的数据,只需要在sql后面加一个时间就可以了,具体的可以参照elasticsearch官方说明文档。

 

本文档参照

http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-plugins.html

https://github.com/jprante/elasticsearch-jdbc


文章转载自阿桂的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论