MySQL のエラスティック検索

Salman Mehmood 2023年6月20日
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 でデータを認証します。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

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