使用这个案例模板文件重新命名
logstash-sample.conf个人理解确实应该是 `>=`. 前文配置时也是 `>=`
改成ansi格式,不要有中文备注
假设第一次扫描结束时,时间节点为t1,而且这个时间节点有两条数据A和B,其中B没扫到,如果后面还是按大于t1扫描,就会漏掉B。
如果我们的策略是第一次扫描直接放弃t1时间节点的数据,即update_time<now()。这样下次扫描就可以扫到了,因为sql_last_value是小于t1的,update_time>:sql_last_value就包含了A和B。
简而言之,往前看一个步骤就可以理解了。
input {
jdbc {
jdbc_driver_library => "D:\\data_of_programming\\L2R\\ElasticSearch\\logstash-6.3.2\\mysql-connector-java-5.1.44.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://localhost:3306/blog?serverTimezone=UTC&characterEncoding=utf8"
jdbc_user => "root"
jdbc_password => "root"
# 定时任务,默认一分钟,"* * * * *"代表设置为无延迟
schedule => "* * * * *"
# 清空上一次sql_last_value记录
clean_run => true
statement => "SELECT * FROM t_blog"
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "blog"
document_id => "%{id}"
}
}
那是计算上有误差吧
这个问题在bin文件夹中的logstash.bat启动文件 打开 修改里边的%CLASSPATH% 改成"%CLASSPATH%" 大概在55行左右 源文件内容 %JAVA% %JAVA_OPTS% -cp %CLASSPATH% org.logstash.Logstash %* 修改成%JAVA% %JAVA_OPTS% -cp "%CLASSPATH%" org.logstash.Logstash %*
看看你的表有没有update_time这个字段
+1~
网上复制的配置文件格式有问题,和我一样,重新换行一下就可以了
+1~
假如2022:01:01 00:01插100条
第一次搜
>1979:01:01 00:00 < 2022:01:01 00:01
你可能根本就搜不出来,因为条件是少于当时系统时间00:01
其实就是搜索了
>1979:01:01 00:00 < 2020:01:01 00:00这个范围而已
所以这时候插入的数据根本没匹配到数据
注意这里保存的时间点可能是00:00,但绝对不是00:01
所以第二次搜的时候是>00:00而不是>00:01
>2022:01:01 00:00 < 2022:05:05 00:01
这里为什么是00:00而不是00:01呢,因为第一次搜的时候是记录<少于不是=的时间点
其实老师这个语法只是把当前时间插入的100条数据放弃搜索不处理而是供给下次执行搜索的范围做条件
重新编写SQL,ok
是必须要有update_time这个字段才能同步更新吗 其他能同步更新不
表示最后一次执行查询的时间。
ES的数据条数在下面啊,docs里面的count才是,你截图的是集群数量?
这个原因是环境变量的问题 不是jvm的问题
CREATE DATABASE ems;
USE ems;
CREATE TABLE `t_blog` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`title` varchar(60) DEFAULT NULL COMMENT '博客标题',
`author` varchar(60) DEFAULT NULL COMMENT '博客作者',
`content` mediumtext COMMENT '博客内容',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4
# 自己造的几条数据
INSERT INTO `ems`.`t_blog`(`id`, `title`, `author`, `content`, `create_time`, `update_time`) VALUES (1, 'Springboot 为什么这', 'bywind', '没错 Springboot ', '2019-12-08 01:44:29', '2019-12-08 01:44:34');
INSERT INTO `ems`.`t_blog`(`id`, `title`, `author`, `content`, `create_time`, `update_time`) VALUES (3, 'Springboot 中 Redis', 'bywind', 'Spring Boot', '2019-12-08 01:44:29', '2019-12-08 01:44:29');
INSERT INTO `ems`.`t_blog`(`id`, `title`, `author`, `content`, `create_time`, `update_time`) VALUES (4, 'Springboot 中如何优化', 'bywind', NULL, '2019-12-08 01:44:29', '2019-12-08 01:44:29');
INSERT INTO `ems`.`t_blog`(`id`, `title`, `author`, `content`, `create_time`, `update_time`) VALUES (5, 'Springboot 消息队列', 'bywind', NULL, '2019-12-08 01:44:29', '2019-12-08 01:44:29');
INSERT INTO `ems`.`t_blog`(`id`, `title`, `author`, `content`, `create_time`, `update_time`) VALUES (6, 'Docker Compose + Springboot', 'bywind', NULL, '2019-12-08 01:44:29', '2019-12-08 01:44:29');
老哥求一份t_blog的数据
两种解决方案:
1. 先操作一张表 然后再操作另外一张表 最后组合两张表的数据
2. 两张表关联查询【数据库可以】
看实体都可以直接创建的呀