淘东电商项目(41) -利用Logstash自动同步数据库内容到ES(超详细)

引言

本文代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/taodong-shop

在前面三篇博客里,已经成功的安装好了ELK以及设计了商品搜索服务的表结构,内容可以参见:

商品的搜索我们用到了ES,那如何把数据录入ES呢?不可能是一条数据一条数据的手动录入,这多耗时间呀,那该如何做呢?本文来讲。

本文目录结构:
l____引言
l____ 1. 如何实现数据库与ES同步
l____ 2. 数据库数据录入
l____ 3. logstash同步数据库内容到ES
l________ 3.1 logstash安装插件
l____________ 3.1.1 logstash-input-jdbc插件安装
l____________ 3.1.2 logstash-output-elasticsearch插件安装
l________ 3.2 logstash配置
l____________ 3.2.1 logstash配置文件讲解
l____________ 3.2.2 上传配置文件
l____ 4. 测试
l____ 5. 总结

1. 如何实现数据库与ES同步

我们都知道ES是搜索引擎,它的搜索速度比数据库快很多,那如何将数据库里面的内容同步到ES呢?这个时候就需要用到中间件Logstash了。

Logstash是一个开源数据收集引擎,具有实时管道功能,Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

我自己画了一张数据库与ES同步的原理图,如下:
在这里插入图片描述
首先在Logstash里配置相关的信息,如下:

1.配置MySQL信息有:

  • 数据库连接信息
  • 数据库查询最新数据SQL

2.配置定时器:

  • 配置定时器的定时规则(如:每分钟从数据库里定时一次)

3.配置ES:

  • 配置ES连接信息
  • ES文档id等信息

2. 数据库数据录入

数据库的表设计已经在前面的博客《淘东电商项目(39) -商品搜索服务数据库设计》已经讲解过了,为了本文有演示效果和以后的博客讲解,先插入假数据,内容我是参考京东生鲜(如有侵权,作者可以联系我):

category表:

INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (1, 0, '新鲜水果', 0, 0, NULL, NULL, '2020-03-02 15:00:57', '2020-03-02 15:00:57', '2020-03-02 15:00:57');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (2, 1, '热销水果', 0, 0, NULL, NULL, '2020-03-02 15:02:08', '2020-03-02 15:02:08', '2020-03-02 15:02:08');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (3, 1, '时令水果', 0, 0, NULL, NULL, '2020-03-02 15:02:08', '2020-03-02 15:02:08', '2020-03-02 15:02:08');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (4, 1, '热带水果', 0, 0, NULL, NULL, '2020-03-02 15:02:08', '2020-03-02 15:02:08', '2020-03-02 15:02:08');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (5, 1, '地标水果', 0, 0, NULL, NULL, '2020-03-02 15:02:08', '2020-03-02 15:02:08', '2020-03-02 15:02:08');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (6, 2, '苹果', 0, 0, NULL, NULL, '2020-03-02 15:03:19', '2020-03-02 15:03:19', '2020-03-02 15:03:19');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (7, 2, '橙子', 0, 0, NULL, NULL, '2020-03-02 15:03:19', '2020-03-02 15:03:19', '2020-03-02 15:03:19');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (8, 0, '海鲜水产', 0, 0, NULL, NULL, '2020-03-02 15:28:39', '2020-03-02 15:28:39', '2020-03-02 15:28:39');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (9, 8, '鱼类', 0, 0, NULL, NULL, '2020-03-02 15:28:49', '2020-03-02 15:28:49', '2020-03-02 15:28:49');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (10, 8, '虾类', 0, 0, NULL, NULL, '2020-03-02 15:28:49', '2020-03-02 15:28:49', '2020-03-02 15:28:49');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (11, 9, '三文鱼', 0, 0, NULL, NULL, '2020-03-02 15:30:10', '2020-03-02 15:30:10', '2020-03-02 15:30:10');
INSERT INTO `taodong-goods`.`category`(`ID`, `PARENT_ID`, `NAME`, `STATUS`, `SORT_ORDER`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (12, 9, '鳕鱼', 0, 0, NULL, NULL, '2020-03-02 15:30:10', '2020-03-02 15:30:10', '2020-03-02 15:30:10');

attribute_key表:

INSERT INTO `taodong-goods`.`attribute_key`(`ID`, `CATEGORY_ID`, `ATTRIBUTE_NAME`, `NAME_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (1, 6, '重量', '0', 1, NULL, '2020-03-02 15:34:35', '2020-03-02 15:34:35', '2020-03-02 15:34:35');
INSERT INTO `taodong-goods`.`attribute_key`(`ID`, `CATEGORY_ID`, `ATTRIBUTE_NAME`, `NAME_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (2, 6, '类别', '0', 1, NULL, '2020-03-02 15:34:35', '2020-03-02 15:34:35', '2020-03-02 15:34:35');
INSERT INTO `taodong-goods`.`attribute_key`(`ID`, `CATEGORY_ID`, `ATTRIBUTE_NAME`, `NAME_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (3, 6, '原产地', '0', 1, NULL, '2020-03-02 15:34:35', '2020-03-02 15:34:35', '2020-03-02 15:34:35');
INSERT INTO `taodong-goods`.`attribute_key`(`ID`, `CATEGORY_ID`, `ATTRIBUTE_NAME`, `NAME_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (4, 6, '售卖方式', '0', 1, NULL, '2020-03-02 15:34:35', '2020-03-02 15:34:35', '2020-03-02 15:34:35');

attribute_vallue表:

INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (1, '1', '3kg-4kg', '0', 1, NULL, '2020-03-02 15:36:27', '2020-03-02 15:36:27', '2020-03-02 15:36:27');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (2, '1', '1000g以下', '0', 1, NULL, '2020-03-02 15:36:42', '2020-03-02 15:36:42', '2020-03-02 15:36:42');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (3, '1', '1000-1999g', '0', 1, NULL, '2020-03-02 15:36:43', '2020-03-02 15:36:43', '2020-03-02 15:36:43');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (4, '1', '2000-3999g', '0', 1, NULL, '2020-03-02 15:36:43', '2020-03-02 15:36:43', '2020-03-02 15:36:43');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (5, '2', '红富士', '0', 1, NULL, '2020-03-02 15:38:55', '2020-03-02 15:38:55', '2020-03-02 15:38:55');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (6, '2', '雪莲果', '0', 1, NULL, '2020-03-02 15:38:55', '2020-03-02 15:38:55', '2020-03-02 15:38:55');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (7, '2', '徐香', '0', 1, NULL, '2020-03-02 15:38:55', '2020-03-02 15:38:55', '2020-03-02 15:38:55');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (8, '3', '陕西', '0', 1, NULL, '2020-03-02 15:38:57', '2020-03-02 15:38:57', '2020-03-02 15:38:57');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (9, '3', '四川', '0', 1, NULL, '2020-03-02 15:38:57', '2020-03-02 15:38:57', '2020-03-02 15:38:57');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (10, '3', '泰国', '0', 1, NULL, '2020-03-02 15:38:57', '2020-03-02 15:38:57', '2020-03-02 15:38:57');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (11, '3', '海南', '0', 1, NULL, '2020-03-02 15:38:59', '2020-03-02 15:38:59', '2020-03-02 15:38:59');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (12, '3', '山东', '0', 1, NULL, '2020-03-02 15:38:59', '2020-03-02 15:38:59', '2020-03-02 15:38:59');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (13, '3', '广西', '0', 1, NULL, '2020-03-02 15:38:59', '2020-03-02 15:38:59', '2020-03-02 15:38:59');
INSERT INTO `taodong-goods`.`attribute_value`(`ID`, `ATTRIBUTE_ID`, `ATTRIBUTE_VALUE`, `VALUE_SORT`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (14, '3', '越南', '0', 1, NULL, '2020-03-02 15:38:59', '2020-03-02 15:38:59', '2020-03-02 15:38:59');

product表:

INSERT INTO `taodong-goods`.`product`(`ID`, `CATEGORY_ID`, `NAME`, `SUBTITLE`, `MAIN_IMAGE`, `SUB_IMAGES`, `DETAIL`, `ATTRIBUTE_LIST`, `PRICE`, `STOCK`, `STATUS`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (1, 6, '烟台红富士苹果', '红富士苹果', 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1296845473,2218916964&fm=26&gp=0.jpg', '{\"imgages\":[{\"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3443692772,1819655971&fm=26&gp=0.jpg\"},{\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1435166030,2305236542&fm=26&gp=0.jpg\"}]}', '烟台红富士苹果 12个 净重2.6kg以上', '1,2,3,4', NULL, NULL, 0, 1, NULL, '2020-03-02 16:02:40', NULL, '2020-03-02 16:02:40');

product_specs表:

INSERT INTO `taodong-goods`.`product_specs`(`ID`, `PRODUCT_ID`, `PRODUCT_SPECS`, `SPECS_SEQ`, `PRODUCT_STOCK`, `PRODUCT_PRICE`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (1, 1, '{\"内存\":\"4G\",\"颜色\":\"红色\",\"年份\":\"2019\",\"尺寸\":\"16寸\"}', 0, 30, 3699.00000000, 1, NULL, '2019-03-02 15:50:04', '2019-03-02 15:50:04', '2019-03-02 15:50:04');
INSERT INTO `taodong-goods`.`product_specs`(`ID`, `PRODUCT_ID`, `PRODUCT_SPECS`, `SPECS_SEQ`, `PRODUCT_STOCK`, `PRODUCT_PRICE`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (2, 1, '{\"内存\":\"8G\",\"颜色\":\"白色\",\"年份\":\"2019\",\"尺寸\":\"16寸\"}', 0, 30, 3899.00000000, 1, NULL, '2019-03-02 15:50:04', '2019-03-02 15:50:04', '2019-03-02 15:50:04');
INSERT INTO `taodong-goods`.`product_specs`(`ID`, `PRODUCT_ID`, `PRODUCT_SPECS`, `SPECS_SEQ`, `PRODUCT_STOCK`, `PRODUCT_PRICE`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (3, 1, '{\"内存\":\"16G\",\"颜色\":\"白色\",\"年份\":\"2019\",\"尺寸\":\"16寸\"}', 0, 30, 4199.00000000, 1, NULL, '2019-03-02 15:50:04', '2019-03-02 15:50:04', '2019-03-02 15:50:04');

3. logstash同步数据库内容到ES

3.1 logstash安装插件

3.1.1 logstash-input-jdbc插件安装

如果要要实现logstash同步MySQL的数据到ES,首先的前提是要让logstash与Mysql建立连接,那该如何建立呢?其实是需要安装jdbc插件的,安装方法如下:

1.启动logstash:

docker start logstash

2.进入logstash插件目录:

docker exec -it logstash /bin/bash
cd /usr/share/logstash/bin

3.在线安装jdbc插件:

./logstash-plugin install logstash-input-jdbc

在这里插入图片描述
最后一句的中文翻译是:“错误:安装终止,插件“ logstash-input-jdbc” 已经被'logstash-integration-jdbc'支持”。表示已经安装了,无需再安装。

3.1.2 logstash-output-elasticsearch插件安装

要让logstash与es能进行信息交互,还需要安装“logstash-output-elasticsearch”插件。

进入logstash目录后,执行安装命令:

./logstash-plugin install logstash-output-elasticsearch

在这里插入图片描述
安装成功!

3.2 logstash配置

3.2.1 logstash配置文件讲解

先贴上logstash配置内容(mysql.conf):

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/lib/mysql-connector-java-5.1.46.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://192.168.18.166:3306/taodong-goods"
    jdbc_user => "root"
    jdbc_password => "123456"
    schedule => "* * * * *"
    statement => "SELECT * FROM product WHERE UPDATED_TIME >= :sql_last_value"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "updated_time"
    last_run_metadata_path => "syncpoint_table"
  }
}


output {
    elasticsearch {
        hosts => ["192.168.162.134:9200"]
        index => "product"
        document_id => "%{id}"
        document_type => "product"
    }
    stdout {
        codec => json_lines
    }
}

配置字段字段解析:

字段名 解析
jdbc_driver_library jdbc mysql 驱动的路径
jdbc_driver_class 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
jdbc_connection_string mysql 地址
jdbc_user mysql 用户
jdbc_password mysql 密码
schedule 执行 sql 时机,类似 crontab 的调度
statement 要执行的 sql
sql_last_value 以 “:” 开头是定义的变量,可以通过 parameters 来设置变量,这里的 sql_last_value 是内置的变量,表示上一次 sql 执行中 update_time 的值,这里 update_time 条件是 >= 因为时间有可能相等,没有等号可能会漏掉一些增量。上次时间点会记录到/usr/share/logstash文件夹的syncpoint_table文件里
use_column_value 使用递增列的值
tracking_column_type 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
tracking_column 注意一定要小写,递增字段的名称,这里这列的类型是 timestamp
last_run_metadata_path 同步点文件,这个文件记录了上次的同步点,重启时会读取这个文件,这个文件可以手动修改,在/usr/share/logstash文件夹的syncpoint_table文件里
hosts ES的IP地址及端口
index 索引名称 可自定义
document_id 注意一定要小写,要关联的数据库中有一个id字段,对应类型中的id
codec 输出格式

3.2.2 上传配置文件

注意:上面的配置文件里面配置了mysql 的驱动包,所以要下载驱动包,下载地址:https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.46/mysql-connector-java-5.1.46.jar

首先上传msql驱动包到logstash的lib目录/usr/share/logstash/lib(如果不知道怎么上传,可以参考我的博客《Docker 如何上传本地文件到容器目录?》):
在这里插入图片描述
然后上传配置文件mysql.conf/usr/share/logstash/config目录(方法同上):
在这里插入图片描述

4. 测试

1.启动elasticsearch,成功:

docker start elasticsearch

在这里插入图片描述
2.启动kibana,成功:

docker start kibana

在这里插入图片描述
3.在kibana控制台,搜索全部,可以看到一共搜索出3条数据:
在这里插入图片描述
4.修改logstash.conf,退出并重启logstash:

## 进入容器
docker exec -it logstash /bin/bash
cd /usr/share/logstash/config/

## 修改mysql.conf名字
mv mysql.conf logstash.conf

## 替换默认启动配置文件
rm -rf /usr/share/logstash/pipeline/logstash.conf 
mv logstash.conf /usr/share/logstash/pipeline

exit
docker restart logstash

5.查看日志:

docker logs -f logstash

耐心等候,可以看到定时去查询数据库的内容,如下图:
在这里插入图片描述
6.查看es,可以看到已经查询出来了:

GET product/_search

在这里插入图片描述
7.本地数据库再次插入一条数据

INSERT INTO `taodong-goods`.`product`(`ID`, `CATEGORY_ID`, `NAME`, `SUBTITLE`, `MAIN_IMAGE`, `SUB_IMAGES`, `DETAIL`, `ATTRIBUTE_LIST`, `PRICE`, `STOCK`, `STATUS`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES (2, 6, '赣南脐橙', '甜橙子', 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1296845473,2218916964&fm=26&gp=0.jpg', '{\"imgages\":[{\"https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3443692772,1819655971&fm=26&gp=0.jpg\"},{\"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=1435166030,2305236542&fm=26&gp=0.jpg\"}]}', '赣南脐橙 鲜甜橙子 2.5kg装 单果160g-200g 生鲜自营新鲜水果', '1,2,3,4', NULL, NULL, 0, 1, NULL, '2020-03-31 17:00:40', NULL, '2020-03-31 17:00:40');

在这里插入图片描述
日志可以看到查询到新的数据
在这里插入图片描述
es也能看到有新的数据写入:
在这里插入图片描述

5. 总结

本文主要讲解“如何利用Logstash自动同步数据库内容到ES”,说明了原理和注意的细节。

发布了2707 篇原创文章 · 获赞 5164 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/qq_20042935/article/details/105144774
今日推荐