记录一下ES同步数据到MySQL的过程

记录一下ES同步数据到MySQL的过程,但是还有很多问题没有搞懂,但是数据已经推送成功了,现在记录一下学习记录。

ES数据同步到MySQL只要是通过 logstash-7.14.1-linux-x86_64.tar.gz 进行推送同步,然后修改logstash中的配置文件logstash.conf ,这个文件名称可能不统一,主要是在/data/logstash-7.14.1/config 文件夹下面的conf文件

Linux 网络互通之后,可以使用语句进行内部文件传输

scp -P22 logstash-7.14.1-linux-x86_64.tar.gz root@IP:/data 
scp linux之间文件传输,不用将一个Linux服务器中的文件下载下来 ,然后又传输到另一台Linux服务器上去
root 为服务器账户
IP 地址
/data为文件传输的路径
ps -ef | grep logstash 查看是否有logstash进程 
logstash.conf配置文件
复制代码

# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.

input {
elasticsearch {
hosts => ["IP:端口号]
index => "ES索引名称"
user => "账户"
password => "密码"
query => '{"query": {"range": {"recordDate": {"gte": "2023-12-11 01:46:00","lte": "2023-12-12 01:48:00"}}}}'#ES推送数据进行过滤

#query => '{"query": {"range": {"recordDate": {"gte": "now-1d/d","lte": "now/d"}}}}'#ES过滤出最近一天的数据
}
}

output {

jdbc {
connection_string => "jdbc:mysql://IP:端口号/数据库"
username => "账户"
password => "密码"
driver_jar_path => "/data/mysql-connector-java-8.0.25.jar"
driver_class => "com.mysql.jdbc.Driver"
statement => ["insert into table_name(id,name) values (?,?)","[id]","[name]"]
}
}

复制代码

配置文件解析:

input参数:可以理解成数据源相关信息,也就是ES数据库的相关信息,如果来源数据源存在多个服务器中,则可以在host 用 “,” 进行区分

output参数:可以理解成数据存储相关信息,也就是mysql 数据库相关信息,这里面的URL都是需要手动配置, 其中 statement参数是值数据推送的SQL方式 

其他的参数基本上就是数据库的URL、jar路劲等信息

然后启动logstash

nohup /data/logstash-7.14.1/bin/logstash -f /data/logstash-7.14.1/config/logstash.conf --config.reload.automatic & #去logstash/bin 中启动
同时可以通过
ps -ef |grep logstash 查看程序是否跑起来
停止logstash
kill 进程 #直接用kill 结束进程
查看日志
在logstash/logs/logstash-plain.log 查看日志情况

 

遇到的问题:

1.output jdbc 无法识别,原因是logstash 缺少了 logstash-output-jdbc 插件,解决方案:

我采用的是离线安装的方式:
在网址上下载的别人打包好的 logstash-output-jdbc.zip ,这种不熟悉的不建议自己从官网下载打包,可以去网上找打包好的,避免自己压缩过程中出现问题,无法安装
去logstash/bin 下执行
./logstash-plugin install file:///data/logstash-output-jdbc.zip
然后
./logstash-plugin list #查看是否有logstash-output-jdbc插件
同样
./logstash-plugin list|grep jdbc #查看是否有logstash-output-jdbc插件

2.ES 推送到MySQL 数据量很大,且MySQL要求有主键,因此在MySQL加一个自增长ID字段进行推送,本来准备使用ES的_id 索引作为主键推送到MySQL,但是_id获取不出来,没办法才使用自增长字段

 "query": {
    "ids": {
     "values":"8OPWVIwBnc4eoTglyTMF"
    }
  }#ES可以通过这个语句根据 _id 索引查询数据

 

posted @   凌晨与风  阅读(448)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示