Búsqueda elástica en MySQL

Salman Mehmood 20 junio 2023
Búsqueda elástica en MySQL

Aprenderemos a integrar ElasticSearch con MySQL. También examinaremos algunas diferencias clave entre las bases de datos en formato JSON y las bases de datos relacionales.

Integrar ElasticSearch con MySQL

Como sabemos, MySQL es un sistema de gestión de datos basado en relaciones que almacena datos en el esquema.

Por otro lado, Elastic Search (ES) es NoSQL basado en el almacén de datos. Es un motor de búsqueda distribuido de código abierto.

Proporciona análisis de datos en tiempo real. Por lo tanto, es más eficiente en algunos casos que RDBMS.

Busca sitios web/aplicaciones, recopila y analiza datos de registro, análisis y visualización de datos. La diferencia terminológica básica entre una base de datos en formato JSON y una base de datos relacional es: base de datos equivale a clúster, tablas equivalen a índices (mecanismo de organización de datos, almacena estructura de datos compleja en documentos JSON), fila equivale a documentos y columnas equivale a campos.

La colección de nodos se denomina clúster; los fragmentos son piezas de datos. El requisito previo aquí es que necesitamos tener MySQL instalado.

Puede encontrar una versión de código abierto en la sección MySQL Community Server, que puede ubicar en el sitio de descargas de MySQL.

A continuación, creamos una tabla en 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
);

Insertar consulta

Ahora vamos al servidor MySQL e insertamos estos registros:

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

Ahora comprobamos por:

select * from info_cus;

Producción :

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

Estamos listos para comenzar si obtenemos la tabla correcta con los registros.

Necesitamos descargar el conector JDBC para conectar los dos ya que el ES está basado en Java. Esta conexión ayudará a extraer los datos necesarios del almacén de datos y moverlos a Elastic Search.

Para descargar el conector JDBC vaya a este enlace. Habrá un archivo jar; dado que es universal, se ejecutará en cualquier sistema operativo: Windows, macOS, etc.

A continuación, extraemos el archivo y nos aseguramos de usar el archivo bin.jar sin importar la versión que tengas instalada, copia este archivo en el directorio raíz con un nombre que diga jdbc.jar. En <localpath>/logstash-7.12.0/, genere un nuevo archivo de texto llamado jdbc_conn.conf.

Use el siguiente código que se proporciona a continuación en este nuevo archivo de texto. Creará una canalización de Logstash a través de un complemento JDBC.

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

Producción :

{
  stdout { codec =>  "rubydebug"}
}

Ahora, abra Logstash con su nuevo archivo de configuración JDBC_conn: bin/logstash -f jdbc_conn.conf. Finalmente, vamos a Logstash para mover los datos e iniciamos sesión en Elastic Search para autenticar los datos en Kibana.

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