windows配置启动es,logstash同步mysql数据库

windows配置部署es+logstash同步mysql数据库

一、版本:

jdk--11.0.9			  
elasticsearch--7.10.0   https://www.elastic.co/cn/downloads/past-releases#elasticsearch
logstash--7.10.0	https://www.elastic.co/cn/downloads/past-releases#logstash
ik分词器--7.10.0		https://github.com/medcl/elasticsearch-analysis-ik/releases
jdbc--8.0		https://repo1.maven.org/maven2/mysql/mysql-connector-java/

二、启动es:

1、elasticsearch、logstash、ik下载好之后放在一个没有空格的目录内,解压即可。

2、在elasticsearch/plugins目录下解压elasticsearch-analysis-ik,并把目录名字改为ik

3、双击elasticsearch\bin\elasticsearch.bat即可启动es,默认端口localhost:9200

三、启动logstash:

logstash\bin目录下创建logstash.conf文件

input {
    jdbc {
    	#jdbc连接数据库的格式
        jdbc_connection_string => "jdbc:mysql:url\db_name?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai"
        jdbc_user => "数据库用户"
        jdbc_password => "密码"
    	#指定jdbc的路径
        jdbc_driver_library => "mysql-connector-java-8.0.15.jar"
        jdbc_driver_class => "com.mysql.jdbc.Driver"
    
    	#是否分页
        jdbc_paging_enabled => "true"     
        jdbc_page_size => "5000"
    
    	#数据库的查询语句,两种方法:1、statement_filepath指定sql路径;2、sql语句
    	
        # statement_filepath => "filename.sql"
        statement => "SELECT * FROM tablename WHERE keyId >= :sql_last_value"
    	#多久执行一次同步。
        schedule => "* * * * *"
        type => "_doc"

        # 是否需要记录某列的值,用于实时同步更新。
        use_column_value => true
        # 需要记录的字段,一般用于记录主键id,或者更新时间,用于sql查询最新。
        tracking_column => "keyid"
        # 是否清除记录的字段。
        clean_run => false
	#记录字段保存的位置。
        last_run_metadata_path => "./logstash_capital_bill_last_id"
	#写入es数据的key,默认会被转成小写,该字段用于控制是否小写。
        #lowercase_column_names => True

        jdbc_default_timezone => "Asia/Shanghai"
        plugin_timezone => "local"
    }
}


#ElasticSearch中默认使用UTC时间,和中国时间相差8小时,加入以下配置
filter {
    ruby {
        code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
    }
    ruby {
        code => "event.set('@timestamp',event.get('timestamp'))"
    }
    mutate {
        remove_field => ["timestamp"]
    }
    ruby {
        code => "event.set('myTimeField', event.get('myTimeField').time.localtime + 8*60*60)"
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        document_id => "%{keyid}"#对应主键id,默认全部小写
        index => "test" #index名字
        document_type => "_doc"
    }
    stdout {
     	# JSON格式输出
        codec => json_lines
    }
}

进入logstash\bin目录,输入logstash -f logstash.conf启动logstash

posted @ 2020-12-11 10:27  做个笔记  阅读(1558)  评论(0编辑  收藏  举报