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

1           环境:

CentOS  6.4  x64

JDK1.8.0_45

 

2           Elasticsearch的安装

  1. 1          下载elasticsearch安装包:

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

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

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

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

Elasticsearch安装及自动同步mysql数据库数据_第1张图片

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

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

  3. 6.1     找到Node节点

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

Elasticsearch安装及自动同步mysql数据库数据_第2张图片

  1. 6.2     找到Network And HTTP节点

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

Elasticsearch安装及自动同步mysql数据库数据_第3张图片

  1. 6.3     进入命令模式保存并退出配置文件

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

Elasticsearch安装及自动同步mysql数据库数据_第4张图片

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

Elasticsearch安装及自动同步mysql数据库数据_第5张图片

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

Elasticsearch安装及自动同步mysql数据库数据_第6张图片

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

 

3           Elasticsearch插件的安装

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

  2. 2          elasticsearch-headelasticsearchweb管理界面安装

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

Elasticsearch安装及自动同步mysql数据库数据_第7张图片

  1. 3.2.2   在浏览器输入http://:9200/_plugin/head/进入web管理页面

  2. 3          elasticsearch-jdbc数据访问驱动插件的安装

  3. 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出现下图则说明安装成功

  1. 4          MySQL JDBC驱动安装

  2. 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

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

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

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

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

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

create table person

 (idint ,

namevarchar(20),

sex char(1),

createdate timestamp);

  1. 4.2    插入数据

insert into person(id,name,sex) values(1,'zhangsan','F');

insert into person(id,name,sex) values(2,'zhaoliu','F');

  1. 4.3    创建用户并给用户分配访问数据库的对应表的权限

  2. 4.4    修改防火墙配置,添加3306端口的入站规则

 

5     创建elasticsearch索引并设置与mysql数据更新同步

  1. 5.1    输入curl -XPUT 'http://192.168.120.159:9200/test'命令建立elasticsearch索引

  2. 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"

            }

        }

    }

}'

  1. 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:///test",

        "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官方说明文档。

 

你可能感兴趣的:(java)