Logstash

Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。详细说明可以看官方文档。

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

实践

功能:数据同步,把mysql里面的数据同步到elasticsearch中

logstash有两种同步方式一种是以id作为同步边界,一种是以update_time作为同步边界。logstash有一个定时任务,定时任务到期后就会进行同步。

  • 如果是以id为同步边界的话只会同步新增的数据,无法同步修改的数据。
  • 以update_time作为同步边界,初次同步的话会记录下更新的时间,下次同步的话就会把新增的数据以及修改过的数据进行同步。

这里采用的是update_time方式进行同步。

准备工作

把下载好的包上传到服务器(logstash-6.4.3.tar.gz),与elasticsearch的版本一致,解压到/usr/local/目录下

由于要连接mysql所以需要用到mysql驱动包,用的版本是mysql-connector-java-5.1.41.jar

创建一个foodie-items索引

创建目录

到时候需要把驱动包,Logstash同步配置文件,还有同步的数据库语句放到这个目录下。

cd /usr/local/logstash-6.4.3
mkdir sync

把驱动包放到sync目录下

创建需要同步的数据库语句

vim foodie-items.sql

需要注意的是表中的updated_time时间要比当前的时间还要大,才可以同步过去

SELECTi.id AS itemId,i.item_name AS itemName,i.sell_counts AS sellCounts,ii.url AS imgUrl,tempSpec.price_discount AS price,i.updated_time AS updated_time
FROMitems iLEFT JOIN items_img ii ON i.id = ii.item_idLEFT JOIN ( SELECT item_id, MIN( price_discount ) AS price_discount FROM items_spec GROUP BY item_id ) tempSpec ON i.id = tempSpec.item_id
WHEREii.is_main = 1 AND i.updated_time >= :sql_last_value

sql_last_value是Logstash每次在同步完以后的一个边界值,logstash会自动加上

logstash同步配置文件

一个输入,一个输出

input {jdbc {# 设置 MySql/MariaDB 数据库url以及数据库名称jdbc_connection_string => "jdbc:mysql://192.168.1.14:3306/foodie-shop-dev?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true"# 用户名和密码jdbc_user => "root"jdbc_password => "671354"# 数据库驱动所在位置,可以是绝对路径或者相对路径jdbc_driver_library => "/usr/local/logstash-6.4.3/sync/mysql-connector-java-5.1.41.jar"# 驱动类名jdbc_driver_class => "com.mysql.jdbc.Driver"# 开启分页jdbc_paging_enabled => "true"# 分页每页数量,可以自定义jdbc_page_size => "1000"# 执行的sql文件路径statement_filepath => "/usr/local/logstash-6.4.3/sync/foodie-items.sql"# 设置定时任务间隔  含义:分、时、天、月、年,全部为*默认含义为每分钟跑一次任务schedule => "* * * * *"# 索引类型type => "_doc"# 是否开启记录上次追踪的结果,也就是上次更新的时间,这个会记录到 last_run_metadata_path 的文件use_column_value => true# 记录上一次追踪的结果值(不需要手动创建)last_run_metadata_path => "/usr/local/logstash-6.4.3/sync/track_time"# 如果 use_column_value 为true, 配置本参数,追踪的 column 名,可以是自增id或者时间tracking_column => "updated_time"# tracking_column 对应字段的类型tracking_column_type => "timestamp"# 是否清除 last_run_metadata_path 的记录,true则每次都从头开始查询所有的数据库记录clean_run => false# 数据库字段名称大写转小写lowercase_column_names => false}
}
output {elasticsearch {# es地址hosts => ["192.168.233.132:9200"]# 同步的索引名index => "foodie-items"# 设置_docID和数据相同# document_id => "%{id}"document_id => "%{itemId}"}# 日志输出stdout {codec => json_lines}
}

同步启动

./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf

第一次没有track_time这个文件,所以系统会有一个默认的时间。

后面就会生成一个track_time的文件,里面记录着这次同步的时间。

@timestamp是logstash自己记录的时间,后面同步的话只有数据库的update_time时间大于@timestamp才会同步过来。


@timestamp表示的是本次同步的时间,如果下次同步数据的时候就会把update和该列的时间进行比较不一样就会进行同步

并且会在sync目录下记录本次同步的时间,下次只有update_time大于该时间的才会进行同步

效果

自定义模版配置中文分词器

logstash默认的模版是没有配置中文分词的,可以自己定义一个。

查看默认模版

http://192.168.233.132:9200/_template/logstash/

自定义模版

myik为自定义模版的名称

http://192.168.233.132:9200/_template/myik/

{"order": 0,"version": 1,"index_patterns": ["*"],"settings": {"index": {"refresh_interval": "5s"}},"mappings": {"_default_": {"dynamic_templates": [{"message_field": {"path_match": "message","match_mapping_type": "string","mapping": {"type": "text","norms": false}}},{"string_fields": {"match": "*","match_mapping_type": "string","mapping": {"type": "text","norms": false,"analyzer": "ik_max_word","fields": {"keyword": {"type": "keyword","ignore_above": 256}}}}}],"properties": {"@timestamp": {"type": "date"},"@version": {"type": "keyword"},"geoip": {"dynamic": true,"properties": {"ip": {"type": "ip"},"location": {"type": "geo_point"},"latitude": {"type": "half_float"},"longitude": {"type": "half_float"}}}}}},"aliases": {}
}

把上面自定义的模版进行提交,同步数据就会使用这个模版了

创建一个新的索引

创建一个foodie-items-ik索引,并修改logstash-db-sync.conf配置文件,输出的索引需要改下index => “foodie-items-ik”

重新进行同步

./logstash -f /usr/local/logstash-6.4.3/sync/logstash-db-sync.conf

只要是text类型的都使用上了中文分词器

Logstash同步数据相关推荐

  1. Spring Boot(九):整合elasticsearch并使用logstash同步数据

    一到周末,就想在家里躺尸,逛逛B站,看看直播,打打游戏,美哉美哉.当然,作为一名有自我修养的程序员,学习也是必不可少的.前段时间,我司的另一个项目组接手的项目中用到了elasticsearch,我就查 ...

  2. logstash同步数据到es

    1.下载 下载地址 https://www.elastic.co/cn/downloads/logstash 2.安装 解压即可 3.配置 有两种同步,一种是增量同步,增量同步则只同步两个数据库不同的 ...

  3. Mysql同步数据到Elasticsearch(实时Canal)

    这里只是作为一个想法,Canal有监听binlog文件的功能.所以简单看了一下Canal的入门使用. 后续Canal实时数据同步的功能希望不会被我阉割......当然有大佬已经实现或者有其他方法实现m ...

  4. es分页和mysql分页_用户logstash同步mysql数据到es中7.4.1版本以后输出的sql日志中没有分页信息...

    问题描述: 在使用logstash同步mysql数据库中的数据,在使用logstash7.4.1以前的版本,输出的sql日志如下: [2019-12-09T10:50:01,585][INFO ][l ...

  5. mysql语法错误文件_使用logstash同步MySQL的数据时,在jdbc查询sql文件时报sql语法错误,sql文件是navicat生成的...

    使用logstash同步MySQL的数据时,在jdbc查询sql文件时报sql语法错误,并且错误总是near在第1行,sql文件的编码是utf8mb64 ,不知道是否是编码问题 logstash配置j ...

  6. mysql多表同步es一个索引_使用 Logstash 同步多个数据表到 Elasticsearch 同一个索引 (Index)...

    最近使用了 ELK 做搜索,出报表,由于我们的业务数据很多,汇总起来有近 200 个字段,刚开始写了一个庞大的视图通过 Logstash 同步到 Elasticsearch,但是遇到了很多问题: 1. ...

  7. logstash 同步mongo 数据到 mysql

    以前使用过mongo-connector 同步mongo 数据到es,但无法同步到mysql. 一.软件版本 mysql:5.7 mongo:3.2 logstash:5.4.0 (同ES版本) 二. ...

  8. Logstash同步mysql数据

    Logstash同步mysql数据到ElasticSearch 1.安装logstash 下载logstash,解压压缩包 下载地址:https://www.elastic.co/downloads/ ...

  9. 自建ES迁移至阿里云ES(使用脚本及logstash同步)

    搭建测试3节点ES集群,官网下载所需的版本进行解压运行,ECS与阿里云ES在同一地域可用区,并在相同的VPC内. # mkdir /usr/java # tar xvf jdk-8u162-linux ...

最新文章

  1. 前后台使用ajax传list的时候,用value[] 获取值
  2. Python使用pandas的crosstab函数计算混淆矩阵并使用Seaborn可视化混淆矩阵实战
  3. 毕业以来,今天第一次领到工资,好兴奋哪
  4. Redux你的Angular 2应用--ngRx使用体验
  5. Python类属性和实例属性分别是什么?
  6. .NET 6 新特性 PeriodicTimer
  7. 曾有望成为第三大移动系统:如今正式告别,明日停止一切支持
  8. 身材太好的女生在职场中有哪些劣势?
  9. Vue.js 学习笔记 七 控制样式
  10. (BookxNote Pro)Windows版Marginnote 3 阅读神器 自动生成脑图/思维导图
  11. HTML关联两个标签事件,javascript – 交换2个html元素并保留事件侦听器
  12. python阈值分割_Python实现otsu阈值分割算法
  13. web前端职业生涯路线
  14. BP神经网络(BPNN)
  15. 大学计算机Excel考试内容,大学计算机考试—Excel(操作题供参考,不附练习文件)...
  16. java mina 长连接_长连接神器Mina框架的使用
  17. CAD插件的安装和自动加载dll、arx
  18. probuilder_使用ProBuilder自定义快照原型资产
  19. 单反相机和镜头 怎么样才可以吧身边的mm拍的很漂亮!!
  20. 探索式测试解密——无探索,不测试!

热门文章

  1. 脱裤子放屁之用两个栈实现队列、用两个队列实现栈
  2. 大学应届毕业生应聘java工程师怎样应对面试官的提问?
  3. FCoin“暴雷”投资人该怎么办?律师这样建议
  4. 本地连接-IP和DNS设置
  5. 现在做硬件工程师还有前途吗?
  6. 小白兔和小灰兔【爱情故事系列暖暖的很贴心】
  7. 用adSence赚钱三部曲
  8. 牛顿迭代法解一元三次方程
  9. delphi透明panel组件或者制作方法
  10. IBMX3250取消raid模式,直接装系统