Elasticsearch学习-----第二章 windows环境下Elasticsearch同步mysql数据库

Posted 想去天空的猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch学习-----第二章 windows环境下Elasticsearch同步mysql数据库相关的知识,希望对你有一定的参考价值。

在上一章中,我们已经能够通过spring boot来使用Elasticsearch,但是由于我们习惯性的将数据写入mysql,所以为了解决这个问题,Elasticsearch为我们提供了一个插件logstash来同步我们的数据库。本文所有的安装环境和使用环境都是在windows系统下进行的。

一、logstash的安装

    首先在官网上下载logstash:

    logstash下载地址:https://www.elastic.co/downloads/logstash

    需要注意的是logstash的版本必须是和你的Elasticsearch版本要一致,比如我使用的Elasticsearch是5.6.8,那么下载的就是logstash 5.6.8版本。

    其次如果使用logstash来同步数据库,推荐使用Elasticsearch 5.X的版本,因为Elasticsearch 2.X的版本需要我们集成logstash-jdbc-input才能同步数据库。下载后直接解压就能使用,解压后的文件如图所示。

 

二、logstash的配置

  在安装完logstash后,我们就可以开始配置我们的数据库信息了:

  第一步:在logstash-5.6.8文件下创建一个空文件夹,文件夹名字可以随意取,这个文件夹主要用来放mysql的相关配置文件,我这里创建了一个mysql文件夹:

    

 

第二步:在创建的新文件夹中(mysql文件夹)中放入驱动包:mysql-connector-java.jar

  这个mysq的驱动包应该都很熟悉,可以在mavn项目的.m2仓库中拿到,也可以到mavn的官网下载。

    

 

第三步:在创建的新文件夹中(mysql文件夹)中创建一个sql文件

  从这里开始,就是logstash同步数据库的核心操作了,在这里创建的sql文件主要内容是:mysql需要同步到Elasticsearch的具体数据的查询方式,如果是全量同步,只需要要select * from [table]即可。

      

    sql中的内容为:

SELECT * FROM zoo

 

第四步:logstash链接数据库和Elasticsearch的conf文件

文件的内容为:

input {
    stdin {
    }
    jdbc {
      # mysql 数据库链接,center为数据库名
      jdbc_connection_string => "jdbc:mysql://localhost:3306/center"
      # 用户名和密码
      jdbc_user => "root"
      jdbc_password => "root"
      # 驱动
      jdbc_driver_library => "E:\\logstash-5.6.8\\mysqletc\\mysql-connector-java-5.1.47.jar"
      # 驱动类名
      jdbc_driver_class => "com.mysql.jdbc.Driver"
      jdbc_paging_enabled => "true"
      jdbc_page_size => "50000"
      # 执行的sql 就是上一步创建的sql文件的绝对路径+文件名字
      statement_filepath => "E:\\logstash-5.6.8\\mysqletc\\find.sql"
      # 设置监听间隔  各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
      schedule => "* * * * *"
      # 索引类型
      type => "center"
    }
}


filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
}


output {
    elasticsearch {
        # ES的IP地址及端口
        hosts => ["localhost:9200"]
        # 索引名称
        index => "article"
        # 自增ID id必须是待查询的数据表的序列字段
        document_id => "%{id}"
    }
    stdout {
       # JSON格式输出
        codec => json_lines
    }
}

完成了上面的步骤,logstash的配置也就完成了。

 三、启动logstash开始同步数据库

  首先我们在数据库中添加一张zoo表,并添加几条数据:

    

  在完成了一系列的操作后,我们终于可以开始进行同步数据库了:

第一步:运行elasticsearch.bat文件,打开elasticsearch,运行成功可以看到:

   

第二步:打开一个新的终端窗口,进入到E:\\logstash-5.6.8\\bin目录下

   

第三步:运行logstash -f ../mysql/jdbc.conf,其中logstash -f 表示运行指令, ../mysql/jdbc.conf表示我们配置的jdbc.conf文件路径,成功启动后,可以在终端中看见运行的sql和同步的数据

   

四、测试是否成功

      在同步完成后,我们可以通过查看Elasticsearch的库来测试数据是否同步成功,但是在Elasticsearch 5.X开始不支持head插件,官方推荐使用的是kibana,但是我还是比较习惯使用head(主要是简洁),所以这里推荐一个Elasticsearch 5.x 安装head的博客:https://blog.csdn.net/qq_28988969/article/details/78856599

     安装成功后,查看head概述可以看见我们刚才创建的索引库:

   

     在基本查询中,可以看见我们同步的数据

 其中:timestamp和version是elastisearch自己添加的字段

 

以上是关于Elasticsearch学习-----第二章 windows环境下Elasticsearch同步mysql数据库的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch第二步-CRUD之Sense

微服务Elasticsearch数据聚合&自动补全&数据同步

Elasticsearch学习笔记-03.3创建索引

apache_conf CircleCI 2.0 w / Ruby + RSpec,MySQL,Redis,ElasticSearch

学习笔记第二十八节课

Elasticsearch在Linux环境下的2种运行和停止方式