MySQL のエラスティック検索
ElasticSearch
を MySQL と統合する方法を学びます。 また、JSON 形式のデータベースとリレーショナル データベースの主な違いをいくつか調べます。
ElasticSearch
を MySQL と統合する
ご存じのように、MySQL はスキーマにデータを格納するリレーショナル ベースのデータ管理システムです。
一方、Elastic Search (ES) は、データ ストアに基づく NoSQL です。 オープンソースの分散型検索エンジンです。
リアルタイムのデータ分析を提供します。 したがって、場合によっては RDBMS よりも効率的です。
ウェブサイト・アプリの検索、ログデータの収集・分析、データの分析・可視化を行います。 JSON 形式の DB とリレーショナル データベースの基本的な用語の違いは次のとおりです。データベースはクラスター、テーブルはインデックス (データ編成メカニズム、複雑なデータ構造を JSON ドキュメントに格納)、行はドキュメント、列はフィールドに相当します。
ノードの集まりはクラスターと呼ばれます。 シャードはデータの断片です。 ここでの前提条件は、MySQL をインストールする必要があることです。
オープンソース バージョンは、MySQL ダウンロード サイトのMySQL Community Server
セクションにあります。
次に、MySQL でテーブルを作成します。
CREATE DATABASE info_cus;
DROP TABLE IF EXISTS info_cus;
CREATE TABLE info_cus(
id integer NOT NULL,
PRIMARY KEY (id),
employe_n VARCHAR(32) NOT NULL,
update_time datetime NOT NULL
);
クエリを挿入
次に、MySQL サーバーに移動して、これらのレコードを挿入します。
INSERT INTO info_cus (id, employe_n,update_time)
VALUES (1,'ali',CURDATE()),
(2,'Ayesha',CURDATE()),
(3,'Rizwan',CURDATE()),
(4,'Tanveer',CURDATE());
次に、次の方法で確認します。
select * from info_cus;
出力:
id employe_n update_time
1 ali 2022-11-13 15:31:05
2 Ayesha 2022-11-13 15:31:05
3 Rizwan 2022-11-13 15:31:05
4 Tanveer 2022-11-13 15:31:05
レコードを含む正しいテーブルを取得できれば、準備完了です。
ES は Java ベースであるため、2つを接続するには JDBC コネクタをダウンロードする必要があります。 この接続は、必要なデータをデータストアから抽出し、Elastic Search に移動するのに役立ちます。
JDBC コネクタをダウンロードするには、この リンク にアクセスしてください。 jar
ファイルがあります。 ユニバーサルであるため、Windows、macOS など、どの OS でも実行できます。
次に、ファイルを抽出し、インストールしたバージョンに関係なく、bin.jar
ファイルを使用するようにします。このファイルを、jdbc.jar
という名前でルート ディレクトリにコピーします。 <localpath>/logstash-7.12.0/
で、jdbc_conn.conf
という名前の新しいテキスト ファイルを生成します。
この新しいテキスト ファイルで、以下のコードを使用します。 JDBC プラグインを介して Logstash パイプラインを作成します。
input {
jdbc {
jdbc_driver_library => "<driverpath>/mysql-connector-java-<versionNumber>.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://<MySQL host>:3306/es_db"
jdbc_user => "<myusername>"
jdbc_password => "<mypassword>"
jdbc_paging_enabled => true
tracking_column => "unix_ts_in__seconds"
use_column_value => true
tracking_column_type => "numeric"
schedule => "*/5 * * * * *"
statement => "select *, unix_timestamp AS unix_ts_in__seconds FROM elas_table where (unix_timestamp > :sql_last_value AND modification_time < NOW()) ORDER BY modification_time ASC"
}
}
filter {
mutate {
copy => { "id" => "[@metadata][_id]"}
remove_field => ["id", "@version", "unix_ts_in__seconds"]
}
}
出力:
{
stdout { codec => "rubydebug"}
}
次に、新しい JDBC_conn
設定ファイル bin/logstash -f jdbc_conn.conf
で Logstash を開きます。 最後に、Logstash に移動してデータを移動し、Elastic Search にログインして Kibana でデータを認証します。
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn