Elastische Suche in MySQL

Salman Mehmood 20 Juni 2023
Elastische Suche in MySQL

Wir werden lernen, wie man ElasticSearch mit MySQL integriert. Wir werden auch einige wichtige Unterschiede zwischen Datenbanken im JSON-Format und relationalen Datenbanken untersuchen.

Integrieren Sie ElasticSearch mit MySQL

Wie wir wissen, ist MySQL ein relationales Datenverwaltungssystem, das Daten im Schema speichert.

Auf der anderen Seite ist Elastic Search (ES) NoSQL-basiert auf dem Datenspeicher. Es ist eine verteilte Open-Source-Suchmaschine.

Es bietet eine Echtzeit-Datenanalyse. Daher ist es in einigen Fällen effizienter als RDBMS.

Es durchsucht Websites/Anwendungen, sammelt und analysiert Protokolldaten, Datenanalyse und Visualisierung. Der grundlegende Terminologieunterschied zwischen einer DB im JSON-Format und einer relationalen Datenbank ist: Datenbank gleich Cluster, Tabellen gleich Indizes (Datenorganisationsmechanismus, speichert komplexe Datenstruktur in JSON-Dokument), Zeile gleich Dokumente und Spalten gleich Felder.

Die Sammlung von Knoten wird als Cluster bezeichnet; Shards sind Datenstücke. Die Voraussetzung hier ist, dass MySQL installiert sein muss.

Eine Open-Source-Version finden Sie im Abschnitt MySQL Community Server, den Sie auf der MySQL-Downloadseite finden können.

Als nächstes erstellen wir eine Tabelle in 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
);

Abfrage einfügen

Jetzt gehen wir zum MySQL-Server und fügen diese Datensätze ein:

INSERT INTO info_cus (id, employe_n,update_time)
VALUES (1,'ali',CURDATE()),
(2,'Ayesha',CURDATE()),
(3,'Rizwan',CURDATE()),
(4,'Tanveer',CURDATE());

Jetzt prüfen wir durch:

select * from info_cus;

Ausgang:

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

Wir können loslegen, wenn wir die richtige Tabelle mit Datensätzen bekommen.

Wir müssen den JDBC-Connector herunterladen, um die beiden zu verbinden, da das ES auf Java basiert. Diese Verbindung hilft dabei, die erforderlichen Daten aus dem Datenspeicher zu extrahieren und an Elastic Search weiterzuleiten.

Um den JDBC-Connector herunterzuladen, gehen Sie zu diesem Link. Es wird eine jar-Datei geben; Da es universell ist, läuft es auf jedem Betriebssystem - Windows, macOS usw.

Als nächstes extrahieren wir die Datei und stellen sicher, dass wir die Datei bin.jar verwenden, egal welche Version Sie installiert haben, kopieren Sie diese Datei in das Stammverzeichnis mit einem Namen, der jdbc.jar lautet. Generieren Sie in <localpath>/logstash-7.12.0/ eine neue Textdatei mit dem Namen jdbc_conn.conf.

Verwenden Sie den folgenden unten angegebenen Code in dieser neuen Textdatei. Es erstellt eine Logstash-Pipeline über ein JDBC-Plugin.

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"]
  }
}

Ausgang:

{
  stdout { codec =>  "rubydebug"}
}

Öffnen Sie nun Logstash mit Ihrer neuen JDBC_conn-Konfigurationsdatei: bin/logstash -f jdbc_conn.conf. Schließlich gehen wir zu Logstash, um die Daten zu verschieben, und melden uns bei Elastic Search an, um die Daten in Kibana zu authentifizieren.

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