Logstash导入数据(CentOS7的系统),mysql到elasticsearch中

Logstash导入数据(CentOS7的系统)

使用logstash 导入工具从mysql中导入数据

Logstach安装

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

在 /etc/yum.repos.d/ 中创建logstash.repo文件

[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

执行

sudo yum install logstash
cd /usr/share/logstash/bin/
sudo ./logstash-plugin install logstash-input-jdbc
sudo ./logstash-plugin install logstash-output-elasticsearch
scp mysql-connector-java-8.0.13.tar.gz python@10.211.55.7:~/
tar -zxvf mysql-connector-java-8.0.13.tar.gz
# 这里的mysql-connector-java-8.0.13.tar.gz需要自己下载,这个是java库,因为elasticsearch是java写的,所以在和mysql连接时需要使用到这个插件,类似于客户端。

从MySQL导入数据到Elasticsearch

创建配置文件logstash_mysql.conf

input{
     jdbc {
         jdbc_driver_library => "/home/python/mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar"      # 这个链接的java库的位置,
         jdbc_driver_class => "com.mysql.jdbc.Driver"     # 类名固定不可修改
         jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/python具体库?tinyInt1isBit=false"                # 链接mysql的具体库
         jdbc_user => "root"            # mysql的用户名
         jdbc_password => "mysql"         # mysql的密码
         jdbc_paging_enabled => "true"    # 是否允许批量导入
         jdbc_page_size => "1000"        # 每页数据
         jdbc_default_timezone =>"Asia/Shanghai"     # 指明时区
         statement => "select a.article_id as article_id,a.user_id as user_id, a.title as title, a.status as status, a.create_time as create_time,  b.content as content from news_article_basic as a inner join news_article_content as b on  a.article_id=b.article_id"     # 需要执行的sql语句,使用as进行别名设置的目的是为了和索引库字段一一对应
         use_column_value => "true"
         tracking_column => "article_id"        # 追踪一列,输出时自定义为文档id,方便管理
         clean_run => true
     }
}
output{
      elasticsearch {
         hosts => "127.0.0.1:9200"  
         index => "articles"       # 索引库
         document_id => "%{article_id}"      # 文档_id
         document_type => "article"          # 文档类型
      }
      stdout {
         codec => json_lines  # 显示执行过程,以json格式一行一行输出
     }
}

elasticsearch自定义文档数据如下:

[python@zef ~]$ curl -X PUT 127.0.0.1:9200/articles/article/150000 -H 'Content-Type:application/json' -d '
{
  "article_id": 150000,
  "user_id": 1,
  "title": "python必须是世界上最好的语言",
  "content": "确实如此",
  "status": 2,
  "create_time": "2018-09-03"
}'

上面的sql语句就是按照这种方式进行查询后一一对应的

注意这里的安装路径你可以自己定义,不必照搬照抄
sudo /usr/share/logstash/bin/logstash -f ./logstash_mysql.conf # 执行配置文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值