logstash从MySQL导入数据到ES

下载安装

  • 一定要对应ES版本(5.x,6.x,7.x)
  • win下不用安装解压即用 , 解压目录不能带有空格和中文 , 否则会有奇奇怪怪的报错无法运行
  • win下要给logstash文件夹赋予管理员权限 , 否则执行的时候会读取不到文件
    下载地址:https://github.com/elastic/logstash/releases
    image
    解压出来文件夹内容

编写脚本

  • 在mysql2es文件夹中创建脚本 , 方便后续使用修改
  • 在mysql2es文件夹中放一个MySQL的驱动jar包 , 后续会使用
input {
  jdbc {
	  # mysql 连接地址
	  jdbc_connection_string => "jdbc:mysql://10.0.5.167:3306/law?useUnicode=true&characterEncoding=utf-8&useSSL=false"
	  # 用户名 密码
	  jdbc_user => "1234"
	  jdbc_password => "4321"
	  # mysql 驱动jar包的绝对路径,不要有中文目录不要有空格
	  jdbc_driver_library => ".\mysql2es\mysql-connector-java-8.0.20.jar"
	  # mysql 驱动Class
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  # 是否开启分页 true开启
	  jdbc_paging_enabled => "true"
	  # 分页大小 10000条一页
	  jdbc_page_size => "10000"
	  # sql语句的配置文件路径,如果sql语句比较长,那么写在文件里指定路径
	  #statement_filepath => ""
	  # sql语句 select * 字段就全部添加到ES里了,如果要指定指定字段 select id,name ...
	  statement => "SELECT * FROM A"
	  #定时字段 各字段含义(由左至右)分、时、天、月、年,全部为*默认含义为每分钟都更新(测试结果,不同的话请留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ES IP地址与端口
	  hosts => "esIP地址:端口号" 
	  #ES索引名称(自己定义的)
	  index => "xxx"
	  #自增ID编号 这里是固定语法 %{} 里面写mysql表那个字段就用那个字段作为ES _id 的值
	  document_id => "%{id}"
	  # ES 下的 type 
	  document_type => "xxx"
  }
  # 控制台输出输入流和输出流
  stdout {
      #以JSON格式输出
      codec => json_lines
  }
}

从MySQL表中查询出字段 , 对应ES索引中的结构 , 导入数据


执行脚本

  • 用管理员cmd窗口进入logstash下的bin目录
  • 执行命令 logstash -f ../mysql2es/mysql.conf
  • 等待执行完毕 , 关闭cmd窗口
posted @ 2022-10-11 16:08  反转苹果派  阅读(417)  评论(0编辑  收藏  举报