[ElasticStack]MySQLとLogstash


logstashを使用してテーブルからMySQLデータベースを抽出&フレックス検索インデックスに挿入


1.mysql-serverをダウンロードしてMySQLを使用

sudo apt-get update
sudo apt-get install mysql-server

[output]



2.データを読み込み、MySQLでテーブルを作成する


1)movielensからのデータのロード

cd ~
wget http://files.grouplens.org/datasets/movielens/ml-100k.zip
unzip ml-100k.zip

2)MySQLへ

sudo mysql -r root -p

[output]



3)movielensデータベースの作成

CREATE DATABASE movieslens;

[output]



4) movielens.moviesという名前のテーブルを作成し、データベースとそのテーブルのアーキテクチャを定義します。

CREATE TABLE movielens.movies (
    movieID INT PRIMARY KEY NOT NULL,
    title TEXT,
    releaseDate DATE
    );

[output]



5)作成したデータのロード

LOAD DATA LOCAL INFILE 'ml-100k/u.item' INTO TABLE movielens.movies FIELDS TERMINATED BY '|'
    (movieID, title, @var3)
    set releaseDate = STR_TO_DATE(@var3, '%d-%M-%Y');

[output]


サンプルデータセット(movielensのml−100 k)から1682個のレコードが得られた.

6)確認

USE movielens;

スターで始まる映画タイトルSELECTを試してみる
SELECT * FROM movies WHERE title LIKE 'Star%';

[output]



3.MySQLデータをフレックス検索に入れる


1)MySQLステータスの終了

exit

[output]



2)Connector/Jダウンロード


Connector/Jダウンロードショートカット
Select Operating SystemをPlatformから独立したバージョンに変更し、Zip Archiveダウンロードをクリックして次のページに進みます.

Noありがとうございます.just start my downloadを右クリックしてリンクアドレスをコピーします.

次のコマンドを使用するserver shellウィンドウに入力してダウンロードします.
アドレスが異なる場合がありますので、必ず[リンクアドレスをコピー](Copy Link Address)を使用してコピーしてください.
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.zip

[output]



3)ダウンロードしたzipファイルを解凍する


バージョンによってファイル名が異なる場合がありますので、ダウンロードしたファイルをコピーしてください.
unzip mysql-connector-java-8.0.26.zip

[output]



4)logstashプロファイルの作成


MySQLデータベースから入力を取得する方法については、logstashを構成します.
jsonとして抽出
sudo nano /etc/logstash/conf.d/mysql.conf
//mysql.conf
input {
        jdbc {
                jdbc_connection_string => "jdbc:mysql://localhost:3306/movielens"
                jdbc_user => "silverpaper" 
                jdbc_password => "password"
                #jdbc_driver_library는 경로와 jar파일 명 확인할 것
                jdbc_driver_library => "/home/silverpaper/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar"
                jdbc_driver_class => "com.mysql.jdbc.Driver"
                statement => "SELECT * FROM movies"
        }
}
output {
        stdout { codec => json_lines }
        elasticsearch {
                hosts => ["localhost:9200"]
                index => "movielens-sql"
        }
}

[画面例]



5)MySQLにアクセスしてユーザーを作成する

sudo mysql -uroot -p
CREATE USER 'silverpaper'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'silverpaper'@'localhost';
(*.*에 대한 모든 권한을 로컬호스트의 학생에게 부여)
FLUSH PRIVILEGES;

6)quitを使用してMySQLからMySQLを終了します。実行conf

quit
cd /usr/share/logstash
sudo bin/logstash -f /etc/logstash/conf.d/mysql.conf

[output]



7)ElasticSearchで検索できるか

curl -XGET 'localhost:9200/movielens-sql/_search?q=title:Star&pretty'

[output]