关于MySQL导入数据到elasticsearch的小工具logstash
logstash核心配置文件pipelines.yml
#注:此处的 - 必须顶格写必须!!!
- pipeline.id: invitation
#下面路径配置的是你同步数据是的字段映射关系
path.config: /opt/apps/logstash/config/invitation/invitation.conf
同步数据时的字段映射关系配置文件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
}
}
同步数据的SQL配置文件invitation.sql,具体的SQL就根据你的业务来定了,我这里用的视图所以SQL比较简单。注:路径一定跟你invitation.conf配置文件中的一样
SELECT
*
FROM
invitation
WHERE
modifiedTime >= :sql_last_value
AND modifiedTime < NOW()
此处的:sql_last_value 取得就是你递增字段存放地址中的值
递增字段存放文件invitation.txt。注:路径一定跟你invitation.conf配置文件中的一样
--- 2021-08-30 15:22:08.000000000 +00:00
配置的存放类型是时间类型,存储格式就是这样的。
以上就是logstash的所有配置了,只需要运行即可实现一秒同步一次数据,当然具体多久同步根据你具体的需求来定。
关于MySQL导入数据到elasticsearch的小工具logstash的更多相关文章
- 安装配置elasticsearch、安装elasticsearch-analysis-ik插件、mysql导入数据到elasticsearch、安装yii2-elasticsearch及使用
一.安装elasticsearch 获取elasticsearch的rpm:wget https://download.elastic.co/elasticsearch/release/org/ela ...
- 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟
使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...
- 教程 | 使用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 ...
- mysql导入数据到oracle中
mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...
- mysql导入数据load data infile用法
mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...
- elasticsearch -- Logstash实现mysql同步数据到elasticsearch
配置 安装插件由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc.logstash-o ...
- 使用sqoop从mysql导入数据到hive
目录 前言 一.使用的导入命令 二.遇到的问题及解决 1. 用文本字段进行分区的问题 2. Hadoop历史服务器Hadoop JobHistory没开启的问题 3. 连接元数据存储数据库报错 4 ...
- 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 ...
- 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 ...
随机推荐
- 数据源(Data Source
数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体.在数据源中存储了所有建立数据库连接的信息.就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数 ...
- C++ friend详解
私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. C++ 是 ...
- SpringBoot切换Tomcat容器
SpringBoot默认的容器为Tomcat, 依赖包在spring-boot-starter-web下 Xml代码 <dependencies> <dependency> & ...
- NoSQL之Redis学习笔记
一.NoSQL与Redis 1.什么是NoSQL? NoSQL=Not Only SQL ,泛指非关系型数据库.随着互联网的兴起,传统的关系型数据库已经暴露了很多问题,NoSQL数据库的产生就是为了解 ...
- 13.Vue.js 组件
组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽 ...
- C#文件操作(IO流 摘抄)
11 文件操作概述 11.1 驱动器 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一个驱动器..NET Framework提供DriveInfo类和 D ...
- thinkphp引入PHPExcel类---thinkPHP类库扩展-----引入没有采用命名空间的类库
最近项目中遇到引入PHPExcel第三方类库 但是下载的phpExcel类没有命名空间,而且所有接口文件的命名都是以.php结尾 而不是tp中的.class.php 解决办法很简单:在引入没有采用命 ...
- SpringCloud微服务实战——搭建企业级开发框架(三十三):整合Skywalking实现链路追踪
Skywalking是由国内开源爱好者吴晟(原OneAPM工程师)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点.是一款基于分 ...
- [BUUCTF]PWN——roarctf_2019_easy_pwn(详解)
roarctf_2019_easy_pwn 附件 步骤: 例行检查,64位程序,保护全开 试运行一下程序,看看大概的情况,经典的堆块的菜单 64位ida载入,改了一下各个选项的函数名,方便看程序(按N ...
- 爆款预订,2022 年最值得关注的后台框架 —— Fantastic-admin
前言 如果 2021 年你还没有听说过 Fantastic-admin ,那即将到来的 2022 年可不要再错过了. Fantastic-admin 做为一款开箱即用的 Vue 中后台管理系统框架,距 ...