ElasticSearch-Logstash6.0.0のインストールとmysqlデータのESへのインポート
Logstashのインストール(6.0.0)
- logstashをLinuxにダウンロードします。BaiduCloudLinkを
直接提供します
:https
://pan.baidu.com/s/13M3OdoG3wqcpdebUUSwoHQ抽出コード:5aaq - 解凍(解凍)
unzip logstash-6.0.0.zip
- 後で使用するmysqljarパッケージをダウンロードします(公式Webサイトにアクセスしてダウンロードすることもできます)
リンク:https
://pan.baidu.com/s/1TpFEWE9M81tNNn_uXkW-3Q抽出コード:cg2d
mysqlデータをESにインポートします
1.カスタム構成ファイルを追加します(logstash / configの下に置きます)
vi logstash-mysql.conf
次のコンテンツを追加します。
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
jdbc{
jdbc_connection_string => "jdbc:mysql://192.168.xxx.xxx:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&tinyInt1isBit=false"
jdbc_user => "xxx"
jdbc_password => "xxx"
jdbc_driver_library => "/opt/local_software/logstash-6.0.0/config/mysql-connector-java-5.1.39.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
jdbc_default_timezone =>"Asia/Shanghai"
statement_filepath => "/opt/local_software/logstash-6.0.0/config/sql/face.sql"
schedule => "* * * * *"
# type => "mycat"
# 是否记录上次执行结果, 如果为真,将会把上次执行到的 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 => "id"
tracking_column_type => "numeric"
last_run_metadata_path => "./face_last_id"
lowercase_column_names => false
}
}
filter {
if [sex] == 1 {
mutate {
add_field => {
"tags" => "男"}
}
}
if [sex] == 2 {
mutate {
add_field => {
"tags" => "女"}
}
}
if [sex] == 0 {
mutate {
add_field => {
"tags" => "未知"}
}
}
}
output {
elasticsearch {
hosts => ["http://192.168.135.237:9201"]
#index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
index => "face_card"
document_id => "%{id}"
#user => "elastic"
#password => "changeme"
}
stdout {
codec => json_lines
}
注:
変更する必要がある主なものは次のとおりです。
- jdbc:mysql://192.168.xxx.xxx:3306 / test?
IP、ポート、およびポートの背後にあるデータベースの名前を変更します(ここでテストしています) - jdbc_user => "データベースユーザー名"
- jdbc_password => "データベースパスワード"
- jdbc_driver_library:上記でダウンロードしたmysqljarパッケージの場所
- statement_filepath => "/opt/local_software/logstash-6.0.0/config/sql/face.sql"
これは実行する必要のあるsqlスクリプトであり、logstashはsqlに従ってデータをmysqlにインポートします(sqlは引き続き記述する必要があります) 、一貫して私に従うことができます) - 出力:hosts => ["http://192.168.xxx.xxx:9201"]を独自のESip + portに変更します
2.configの下にディレクトリを作成します
mkdir sql
3. SQLファイルを作成します(SQLディレクトリの下)
vi face.sql
次のコンテンツを追加します。
select * from face_card where id > :sql_last_value order by id limit 1000
4.対応するデータベース(SQLファイルのテーブル名に対応)にテーブルを作成します。
CREATE TABLE `face_card` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sex` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
次のデータを追加します(単純です)
。5。スクリプトを実行します
。logstash-6.0.0ディレクトリでコマンドを実行します。
./bin/logstash -f ./config/face.conf
6.長時間待機した後、次の図に示すように、SQLのインポートが成功したことがわかります。
mysqlによってインポートされたデータを確認します
kibanaを使用するか(kibanaが構成されている場合)、postman
を使用してkibanaで確認
できます。次のコマンドを入力します。
GET /face_card/_search
答えを得た:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 1,
"hits": [
{
"_index": "face_card",
"_type": "doc",
"_id": "2",
"_score": 1,
"_source": {
"name": "yy",
"@version": "1",
"id": 2,
"@timestamp": "2020-07-29T08:39:01.606Z",
"sex": 1,
"tags": [
"男"
]
}
},
{
"_index": "face_card",
"_type": "doc",
"_id": "4",
"_score": 1,
"_source": {
"name": "ee",
"@version": "1",
"id": 4,
"@timestamp": "2020-07-29T08:39:01.614Z",
"sex": 2,
"tags": [
"女"
]
}
},
{
"_index": "face_card",
"_type": "doc",
"_id": "1",
"_score": 1,
"_source": {
"name": "ljj",
"@version": "1",
"id": 1,
"@timestamp": "2020-07-29T08:39:01.604Z",
"sex": 0,
"tags": [
"未知"
]
}
},
{
"_index": "face_card",
"_type": "doc",
"_id": "3",
"_score": 1,
"_source": {
"name": "dd",
"@version": "1",
"id": 3,
"@timestamp": "2020-07-29T08:39:01.614Z",
"sex": 0,
"tags": [
"未知"
]
}
}
]
}
}
mysqlの4つのデータすべてが書き込まれている、つまり、Logstashを使用してデータが正常にインポートされていることがわかります。