1. logstash核心配置文件pipelines.yml

     #注:此处的 - 必须顶格写必须!!!
    - pipeline.id: invitation
    #下面路径配置的是你同步数据是的字段映射关系
    path.config: /opt/apps/logstash/config/invitation/invitation.conf
  2. 同步数据时的字段映射关系配置文件invitation.conf。注:路径一定跟你pipelines.yml配置文件中的一样

     input {
    
     jdbc {
    #驱动jar包的位置
    jdbc_driver_library => "/opt/apps/logstash/lib/mysql-connector-java-8.0.13.jar"
    #驱动类名
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    #MySQL的链接
    jdbc_connection_string => "jdbc:mysql://192.168.0.234:3306/community?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"
    #数据库用户名
    jdbc_user => "mostchh"
    #数据库密码
    jdbc_password => "1qaz2wsx3edc"
    #数据库重连尝试次数
    connection_retry_attempts => "3"
    #超时时间
    jdbc_validation_timeout => "3600"
    #开启分页查询(默认false不开启)
    jdbc_paging_enabled => "true"
    #单次分页查询条数(默认100000,若字段较多且更新频率较高,建议调低此值)
    jdbc_page_size => "500"
    #时区
    #jdbc_default_timezone =>"Asia/Shanghai"
    #如果sql较复杂,建议配通过statement_filepath配置sql文件的存放路径;
    statement_filepath => "/opt/apps/logstash/sql/invitation/invitation.sql"
    #需要记录查询结果某字段的值时,此字段为true
    use_column_value => true
    #是否设置字段为小写,默认是true
    lowercase_column_names => false
    #需要记录的递增字段,用于增量同步,下次只同步比该值大的数据
    tracking_column => "modifiedTime"
    #递增的字段类型
    tracking_column_type => "timestamp"
    #记录上一次运行记录
    record_last_run => true
    #上一次同步的递增字段存放文件路径
    last_run_metadata_path => "/opt/apps/logstash/station/invitation.txt"
    #是否清除last_run_metadata_path的记录,需要增量同步时此字段必须为false
    clean_run => false
    #自动同步数据的cron表达式,下面是一秒执行一次
    schedule => "*/1 * * * * *"
    #对应你pipelines配置文件的ID
    type => "invitation" } }
    #数据处理的过滤器
    filter {
    aggregate {
    task_id => "%{cardId}"
    code => "
    map['cardId'] = event.get('cardId')
    map['title'] = event.get('title')
    map['content'] = event.get('content')
    map['issueUserId'] = event.get('issueUserId')
    map['issueUserName'] = event.get('issueUserName')
    map['issueUserIcon'] = event.get('issueUserIcon')
    map['issueTime'] = event.get('issueTime')
    map['revealStatus'] = event.get('revealStatus')
    map['commentNum'] = event.get('commentNum')
    map['isMeLike'] = event.get('isMeLike')
    map['giveLikeNum'] = event.get('giveLikeNum')
    map['isDelete'] = event.get('isDelete')
    map['issueStatus'] = event.get('issueStatus')
    map['cardStatus'] = event.get('cardStatus')
    map['giveLikeUsers'] ||=[]
    #数据一对多的处理
    if (event.get('userId') != nil)
    if !(map['giveLikeUsers'].include? event.get('userId'))
    map['giveLikeUsers'] << event.get('userId')
    end
    end
    map['file_list'] ||=[]
    map['fileList'] ||=[]
    #数据一对多的处理
    if (event.get('fileId') != nil)
    if !(map['file_list'].include? event.get('fileId'))
    map['file_list'] << event.get('fileId')
    map['fileList'] << {
    'fileId' => event.get('fileId'),
    'fileName' => event.get('fileName'),
    'fileUrl' => event.get('fileUrl')
    }
    end
    end
    event.cancel()
    " push_previous_map_as_event => true
    timeout => 5
    }
    mutate {
    }
    mutate {
    #过滤不需要的字段
    remove_field => ["@timestamp","@version"]
    }
    } output {
    elasticsearch {
    document_id => "%{cardId}"
    document_type => "_doc"
    index => "bbs_card_management"
    hosts => ["http://192.168.0.178:9200"]
    }
    stdout{
    codec => rubydebug
    }
    }
  3. 同步数据的SQL配置文件invitation.sql,具体的SQL就根据你的业务来定了,我这里用的视图所以SQL比较简单。注:路径一定跟你invitation.conf配置文件中的一样

     SELECT
    *
    FROM
    invitation
    WHERE
    modifiedTime >= :sql_last_value
    AND modifiedTime < NOW()

    此处的:sql_last_value 取得就是你递增字段存放地址中的值

  4. 递增字段存放文件invitation.txt。注:路径一定跟你invitation.conf配置文件中的一样

     --- 2021-08-30 15:22:08.000000000 +00:00

    配置的存放类型是时间类型,存储格式就是这样的。

以上就是logstash的所有配置了,只需要运行即可实现一秒同步一次数据,当然具体多久同步根据你具体的需求来定。

关于MySQL导入数据到elasticsearch的小工具logstash的更多相关文章

  1. 安装配置elasticsearch、安装elasticsearch-analysis-ik插件、mysql导入数据到elasticsearch、安装yii2-elasticsearch及使用

    一.安装elasticsearch 获取elasticsearch的rpm:wget https://download.elastic.co/elasticsearch/release/org/ela ...

  2. 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟

    使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...

  3. 教程 | 使用Sqoop从MySQL导入数据到Hive和HBase

    基础环境 sqoop:sqoop-1.4.5+cdh5.3.6+78, hive:hive-0.13.1+cdh5.3.6+397, hbase:hbase-0.98.6+cdh5.3.6+115 S ...

  4. mysql导入数据到oracle中

    mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...

  5. mysql导入数据load data infile用法

    mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...

  6. elasticsearch -- Logstash实现mysql同步数据到elasticsearch

    配置 安装插件由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc.logstash-o ...

  7. 使用sqoop从mysql导入数据到hive

      目录 前言 一.使用的导入命令 二.遇到的问题及解决 1. 用文本字段进行分区的问题 2. Hadoop历史服务器Hadoop JobHistory没开启的问题 3. 连接元数据存储数据库报错 4 ...

  8. MYSQL导入数据出现The MySQL server is running with the --secure-file-priv

    MYSQL导入数据出现The MySQL server is running with the --secure-file-priv option so it cannot execute this ...

  9. MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误

    MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误 创建表的语句 CREAT ...

随机推荐

  1. java-阿里邮件推送服务开发 -- 发送邮箱验证码

    参考文档: 如何在 DNS 服务器上配置域名:https://help.aliyun.com/knowledge_detail/39397.html?spm=5176.2020520150.102.d ...

  2. 【Linux】【Services】【Package】编译安装

    程序包编译安装:         testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装:         ...

  3. 理解css中的 content:" " 是什么意思

    css中的属性是插入生成的内容,它一般与伪元素:befor和 :after 配合使用. content:"." 就表示在需要的地方插入"." 注意:如果已经规定 ...

  4. 【kafka学习笔记】kafka的基本概念

    在了解了背景知识后,我们来整体看一下kafka的基本概念,这里不做深入讲解,只是初步了解一下. kafka的消息架构 注意这里不是设计的架构,只是为了方便理解,脑补的三层架构.从代码的实现来看,kaf ...

  5. ZooKeeper 06 - ZooKeeper 的常用命令

    目录 1 - 服务端常用命令 2 - 客户端常用命令 3 - 常用四字命令 4 - ZooKeeper 日志的可视化 版权声明 若要部署 ZooKeeper 单机环境,请查看此篇:https://ww ...

  6. InnoDB学习(五)之MVCC多版本并发控制

    MVCC多版本并发控制,是一种数据库管理系统并发控制的方法.MVCC多版本并发控制下,数据库中的数据会有多个版本,分别对应不同的事务,从而达到事务之间并发数据的隔离.MVCC最大的优势是读不加锁,读写 ...

  7. 40张图+万字,从9个数据类型帮你稳稳的拿捏Redis数据结构

    摘要:本文把Redis新旧版本的数据结构说图解一遍,共有 9 种数据结构:SDS.双向链表.压缩列表.哈希表.跳表.整数集合.quicklist.listpack. 本文分享自华为云社区<为了拿 ...

  8. CF263B Squares 题解

    Content 有 \(n\) 个边长为 \(a_i\) 的正方形,第 \(i\) 个正方形的四个顶点分别是 \((0,0),(0,a_i),(a_i,0),(a_i,a_i)\),我们定义一个点属于 ...

  9. TensorFlow.NET机器学习入门【2】线性回归

    回归分析用于分析输入变量和输出变量之间的一种关系,其中线性回归是最简单的一种. 设: Y=wX+b,现已知一组X(输入)和Y(输出)的值,要求出w和b的值. 举个例子:快年底了,销售部门要发年终奖了, ...

  10. 超链接 a 标签点击时,弹出提示框,可以按照如下来写

    onclick="return confirm('确定删除该条记录?')" 加上这条记录后,就可以在访问href属性指向的链接时,有弹出提示