ElasticSearch(二)Logstash的基础使用

编程

    首先,我们打开ES,使用postman新建一个索引user,在postman里使用PUT方式向localhost:9200/user发送请求。看到返回信息:

{

    "acknowledged": true,

    "shards_acknowledged": true,

    "index": "user"

}

说明索引建立成功了,如果没有建立成功,可能是因为ES没有开启自动创建索引,修改一下config/elasticsearch.yml里的配置,把action.auto_create_index设置为true。重新执行一下上面的操作。

    这个时候我们看一下user索引里的数据,在postman里使用get方式,发送localhost:9200/user/_search?q=*&pretty查看user索引下的所有数据。可以看到,在user索引下,并没有任何数据。

    我们要读取的表结构为:

CREATE TABLE `user` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `account` varchar(40) DEFAULT NULL,

  `password` varchar(40) DEFAULT NULL,

  `name` varchar(20) DEFAULT NULL,

  `sex` varchar(15) DEFAULT NULL,

  `head_src` varchar(40) DEFAULT NULL,

  `question` int(11) DEFAULT NULL,

  `answer` varchar(100) DEFAULT NULL,

  `signature` varchar(40) DEFAULT NULL,

  `grade` int(11) DEFAULT NULL,

  `code` varchar(100) NOT NULL,

  `state` tinyint(1) unsigned zerofill NOT NULL,

  `permission` tinyint(1) DEFAULT NULL,

  `date` date DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `account` (`account`)

) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 STATS_PERSISTENT=1;

(大学里自己做的系统里的表,注释都没有,技术不过关啊)

    接下来,我们进入Logstash文件夹里,新建一个ConnectionJar文件夹,在这个文件夹里放入mysql连接的jar包,可以去Maven仓库里面去下一个,这里我就不放链接了。

    然后我们打开Logstash根目录下的bin文件夹,创建conf文件夹,在这个文件夹里,我们创建mysql.conf文件。打开conf文件,设置文件编码为ANSI(非常重要!!非常重要!!非常重要!!)。

    配置文件的内容可以这么写:   

input {

    # 标准输入形式,暂时用不到

    stdin {

    }

    # JDBC设置

    jdbc {

    # 数据库连接

    jdbc_connection_string => "jdbc:mysql://localhost:3306/retina"

    jdbc_user => "root"

    jdbc_password => "123456"

    # Jar包的位置

    jdbc_driver_library => "D:elasticSearchlogstash-7.6.0ConnectionJarmysql-connector-java-5.1.40-bin.jar"

    jdbc_driver_class => "com.mysql.jdbc.Driver"

 

    # 是否使用列数据

    use_column_value => true

    # 追踪的列,与use_column_value必须同时使用

    tracking_column => id

    # 是否开启记录最后一次运行数据

    record_last_run => true

    # 记录数据的保存位置

    last_run_metadata_path=>"D:elasticSearchlogstash-7.6.0inconfstation_parameter.txt"

    # 是否开启分页

    jdbc_paging_enabled => "true"

    # 分页数据大小

    jdbc_page_size => "50000"

    # SQL语句,也可以使用以下的文件形式

    # statement_filepath => "D:elasticSearchlogstash-7.6.0inconfinformation.sql"

    statement => "select * from user where id > :sql_last_value "

    # 定时执行的时间,这个在我的一篇博客里提到https://my.oschina.net/u/4109273/blog/3042086

    schedule => "* * * * *"

    # 索引的名称

    type => "user"

  }

}

# 拦截器设置,本篇中没有用到,就不解释了

filter {}

# 输出配置

output {

    elasticsearch {

       # ES的地址

       hosts => "localhost:9200"

       # 使用的索引

       index => "user"

       # 文档使用的ID列

       document_id => "%{id}"

    }

}

但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!

但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!

但是!不能使用上面的配置,会报错的,因为文件里不能出现中文,所有我们要把所有的注释删掉!(可用的配置信息我写在最后)

然后我们在bin文件里打开cmd,运行.logstash -f .confmysql.conf命令。看到这样的截图,就说明Logstash已经在进行数据处理了。

然后我们看一下user索引下的数据,可以看到,数据已经写入了,再对比一下user表的数据,可以看到,所有的user数据已经写入ES了。至此,logstash的基础使用已经可以了。

 

配置信息:

input {

    stdin {

    }

    jdbc {

    jdbc_connection_string => "jdbc:mysql://localhost:3306/retina"

    jdbc_user => "root"

    jdbc_password => "123456"

    jdbc_driver_library => "D:elasticSearchlogstash-7.6.0JDBCmysql-connector-java-5.1.40-bin.jar"

    jdbc_driver_class => "com.mysql.jdbc.Driver"

 

    use_column_value => true

    tracking_column => id

    record_last_run => true

    last_run_metadata_path=>"D:elasticSearchlogstash-7.6.0inconfstation_parameter.txt"

    jdbc_paging_enabled => "true"

    jdbc_page_size => "50000"

    statement => "select * from user where id > :sql_last_value "

    schedule => "* * * * *"

    type => "user"

  }

}

filter {}

output {

    elasticsearch {

       hosts => "localhost:9200"

       index => "user"

       document_id => "%{id}"

    }

}

 

以上是 ElasticSearch(二)Logstash的基础使用 的全部内容, 来源链接: utcz.com/z/514406.html

回到顶部