Logstash实现mysql同步数据到elasticsearch

下载安装

cd /opt
tar -zxvf logstash-7.4.0.tar.gz
cd logstash-7.4.0/

安装插件

由于这里是从mysql同步数据到elasticsearch,所以需要安装jdbc的入插件和elasticsearch的出插件:logstash-input-jdbc、logstash-output-elasticsearch

bin/logstash-plugin install logstash-input-jdbc
bin/logstash-plugin install logstash-output-elasticsearch

Logstash实现mysql同步数据到elasticsearch_第1张图片

下载mysql连接库

将jar包"mysql-connector-java-8.0.17.jar"
放至logstash/config/目录下
表结构
Logstash实现mysql同步数据到elasticsearch_第2张图片

新增ES索引(在Kibana)

PUT kjt_patent

{
  "mappings": {
      "properties": {
        "id": {
          "type": "text"
        },
        "title": {
          "type": "text"
        },
        "tag": {
          "type": "text",
          "analyzer": "whitespace"
        }
      }
  }
}

清空索引

POST kjt_patent/_delete_by_query
{
  "query": { 
    "match_all": {
    }
  }
}

修改配置文件

在config目录下,创建配置文件(logstash-mysql-es.conf):

input {
  jdbc {
    # mysql相关jdbc配置
    jdbc_connection_string => "jdbc:mysql://172.16.21.34:3306/kjt_data?characterEncoding=utf8&serverTimezone=Asia/Shanghai"
    jdbc_user => "fanl"
    jdbc_password => "fanl@12345"

    # jdbc连接mysql驱动的文件目录
    jdbc_driver_library => "./config/mysql-connector-java-8.0.17.jar"
    jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
    jdbc_paging_enabled => true
    jdbc_page_size => "50000"
    jdbc_default_timezone =>"Asia/Shanghai"

    # mysqlSQL语句
    statement => "select id,title, CONCAT_WS(' ' ,type,tag1,tag2,tag3) as tag,update_time FROM kjt_patent"
	# 也可以使用文件
    # statement_filepath => "./config/jdbc.sql"

    # 这里类似crontab,可以定制定时操作,比如每分钟执行一次同步(分 时 天 月 年)
    schedule => "* * * * *"
    #type => "jdbc"

    # 是否记录上次执行结果, 如果为真,将会把上次执行到的 tracking_column 字段的值记录下来,保存到 last_run_metadata_path 指定的文件中
    #record_last_run => true

    # 是否需要记录某个column 的值,如果record_last_run为真,可以自定义我们需要 track 的 column 名称,此时该参数就要为 true. 否则默认 track 的是 timestamp 的值.
    use_column_value => true

    # 如果 use_column_value 为真,需配置此参数. track 的数据库 column 名,该 column 必须是递增的. 一般是mysql主键
    tracking_column => "update_time"
    
    tracking_column_type => "timestamp"

    last_run_metadata_path => "./logstash_capital_bill_last_id"

    # 是否清除 last_run_metadata_path 的记录,如果为真那么每次都相当于从头开始查询所有的数据库记录
    clean_run => false

    #是否将 字段(column) 名称转小写
    lowercase_column_names => false
  }
}

output {
  elasticsearch {
    hosts => "172.16.21.31:9200"
    index => "kjt_patent"
    document_id => "%{id}"
    template_overwrite => true
  }

  # 这里输出调试,正式运行时可以注释掉
  stdout {
      codec => json_lines
  } 
}

执行

nohup bin/logstash --config.reload.automatic -f config/logstash-mysql-es.conf > logs/logstash.out &

在这里插入图片描述
查询
Logstash实现mysql同步数据到elasticsearch_第3张图片

你可能感兴趣的:(大数据,搜索,软件安装)