Dcoker搭建ES以及Logstash

1 篇文章 0 订阅
本文详细介绍了如何使用Docker搭建Elasticsearch和Logstash。首先,通过拉取镜像、查看及运行容器成功启动了Elasticsearch,并验证其正常工作。接着,讨论了Logstash在数据同步中的作用,特别是与数据库的配合。然后,展示了通过Dockerfile构建Logstash镜像的过程,并成功运行容器,实现数据同步。
摘要由CSDN通过智能技术生成

一、docker搭建Elasticsearch

  • 拉取es镜像:docker pull elasticsearch:7.6.1
    在这里插入图片描述

  • 查看镜像:docker images
    在这里插入图片描述

  • 运行es容器 ,然后查看容器是否启动

    docker run -d --name elasticsearch -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.6.1
    

    在这里插入图片描述
    OK,我们发现现在es启动成功了,现在我们测试一下

  1. 首先我们打开谷歌浏览器,访问:http://ip:9200
    在这里插入图片描述
    证明es启动成功。

  2. 下载es head插件,用于可视化数据管理在这里插入图片描述
    输入ip端口信息,查看健康状态,如下图:
    在这里插入图片描述

二、搭建logstash

首先我们需要说明一下,logstash的作用是什么?第一,我们要知道es的数据是从哪里来的,当然是从数据库来的,这说明他的数据要与db保持一致性,这时候就需要一个工具帮助我们同步数据信息,此时我们就需要安装logstash,同步方式有两种,第一种,设置时间,比如一秒同步一次(全量);另一种方式就是监听mysql的binlog日志,当发现有改动的时候就发起数据更新的请求,更新es中的数据信息。本文从简单的方式来讲解。

  1. 通过Dockerfile构建镜像,我这里的路径是 /usr/local/docker/es (用户可自定义),首先创建Dockerfile文件:vim DockerFile

    FROM logstash
    #安装input插件, 此处有坑,需要配置国内ruby源,否则下载基本失败:https://blog.csdn.net/weixin_40397083/article/details/80605182
    # RUN logstash-plugin install logstash-input-jdbc
    #安装output插件
    # RUN logstash-plugin install logstash-output-elasticsearch
    #容器启动时执行的命令.(CMD 能够被 docker run 后面跟的命令行参数替换)
    CMD ["-f", "/usr/local/docker/es/jdbc.conf"]
    
  2. 创建jdbc.conf文件
    此时需要我们自己导入mysql的驱动jar包

    input{
        stdin{
        }
        jdbc {
            jdbc_connection_string => "jdbc:mysql://localhost:3306/driven-design?useSSL=false&serverTimezone=GMT"
            jdbc_driver_class => "com.mysql.jdbc.Driver"
            jdbc_user => "root"
            jdbc_password => "123456"
            jdbc_paging_enabled => "true"
            jdbc_page_size => "50000"
            # mysql驱动所在位置
            jdbc_driver_library => "/usr/local/docker/es/mysql-connector-java-8.0.15.jar"
            #sql执行语句
            statement => "SELECT top.id, top.title, top.content, top.type,top.uid, top.browse_num,top.care_num, top.comment_num, top.support_num, top.gmt_create, top.gmt_modify,top.`status`,USER.user_name AS author_name,USER.nick AS author_nick,USER.picture AS author_avatar,USER.remark AS remark FROM topic AS top LEFT JOIN sys_user AS USER ON USER.id = top.uid"
            # 定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新
            schedule => "* * * * *"
            # 是否将 sql 中 column 名称转小写
            lowercase_column_names => false
        }
    }
    output {
        elasticsearch {
            hosts => ["101.23.142.22:9200"]
            index => "topic"
            # 文档_id,%{goods_id}意思是取查询出来的goods_id的值,并将其映射到shop的_id字段中
            # 文档_id,%{goodsId}如果是别名,意思是取查询出来的goodsId的值,并将其映射到shop的_id字段中
            document_id => "%{id}"
        }
        stdout {
            codec => json_lines
        }
    }
    
  3. 构建镜像 (最后的点不可省略,他代表当前路径下,当然也可以使用绝对路径)

    docker build -t logstash .
    
  4. 运行容器

    docker run -d --name logstash -v /usr/local/docker/es:/usr/lcoal/docker/es logstash
    
  5. 数据同步结果:
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值