Creando un Motor de Búsqueda Simple con Elasticsearch y Node.js

En la era digital actual, la capacidad de recuperar información rápidamente y de manera eficiente a partir de grandes volúmenes de datos es esencial. Elasticsearch se ha consolidado como una solución líder para facilitar búsquedas complejas y ofrecer resultados en tiempo real. Este tutorial te guiará por el proceso de implementación de un motor de búsqueda simple utilizando Elasticsearch y Node.js, de modo que puedas integrarlo eficazmente en tus proyectos de desarrollo web.

¿Qué es Elasticsearch?

Elasticsearch es un motor de búsqueda y análisis distribuido, diseñado para manejar grandes cantidades de datos de manera muy eficiente. Es ampliamente utilizado para aplicaciones de búsqueda de texto completo, gracias a su capacidad para indexar y buscar documentos en tiempo real.

Preparativos Iniciales

Antes de sumergirnos en el código, necesitas asegurarte de tener instalado Node.js y npm (el gestor de paquetes de Node). También debes tener Elasticsearch instalado y ejecutándose en tu máquina. Puedes descargarlo desde el sitio oficial de Elasticsearch y seguir las instrucciones específicas para tu sistema operativo.

Configurando el Proyecto Node.js

Crea una nueva carpeta para tu proyecto y abre una terminal en esa ubicación. Inicia un nuevo proyecto de Node.js con el siguiente comando:

npm init -y

Esto creará un archivo package.json con la configuración básica de tu proyecto. Ahora, instala las dependencias necesarias:

npm install express body-parser elasticsearch

Aquí, express será nuestro servidor web, body-parser nos ayudará a procesar las peticiones JSON entrantes, y elasticsearch es el cliente oficial de Elasticsearch para Node.js.

Estructura Básica del Proyecto

Crea un archivo llamado app.js. Este será nuestro archivo principal. Aquí configuramos el servidor Express y definimos algunos puntos de entrada básicos:

const express = require('express');
const bodyParser = require('body-parser');
const { Client } = require('@elastic/elasticsearch');

const app = express();
const client = new Client({ node: 'http://localhost:9200' });

app.use(bodyParser.json());

app.listen(3000, () => {
  console.log('Servidor corriendo en http://localhost:3000');
});

Conectándose a Elasticsearch

Ya hemos inicializado el cliente de Elasticsearch en nuestro código. Asegúrate de que Elasticsearch está corriendo en localhost y en el puerto 9200, que son los valores predeterminados.

Indexando Documentos

Para poder buscar algo, primero necesitas indexar algunos datos. Vamos a definir una ruta en Express para hacer justamente eso:

app.post('/index', async (req, res) => {
  try {
    const resp = await client.index({
      index: 'libros',
      body: req.body
    });
    await client.indices.refresh({ index: 'libros' });
    res.status(200).send(resp);
  } catch (error) {
    res.status(500).send(error.toString());
  }
});

Este endpoint acepta documentos JSON a través de peticiones POST y los indexa bajo el índice libros.

Búsqueda de Documentos

Definamos otro endpoint para buscar documentos indexados:

app.get('/search', async (req, res) => {
  try {
    const { query } = req.query;
    const resp = await client.search({
      index: 'libros',
      body: {
        query: {
          match: {
            contenido: query
          }
        }
      }
    });
    res.status(200).send(resp.body.hits.hits);
  } catch (error) {
    res.status(500).send(error.toString());
  }
});

Esta ruta escucha consultas GET y realiza búsquedas basadas en el parámetro query que recibe.

Prueba tu Motor de Búsqueda

Todo está configurado. Ahora puedes iniciar tu servidor con node app.js y usar herramientas como Postman o cURL para indexar algunos documentos y realizar búsquedas.

Conclusiones

Hemos visto cómo configurar un motor de búsqueda básico con Elasticsearch y Node.js, desde la instalación de dependencias hasta la creación de endpoints para indexar y buscar documentos. Puedes expandir este proyecto básico incorporando más funcionalidades de Elasticsearch y refinando la lógica de búsqueda para ajustarse mejor a tus necesidades.

Para aprender más sobre cómo integrar estas y otras tecnologías en tus proyectos, visita nelkodev.com y si tienes preguntas o necesitas contactarme directamente, no dudes en visitar nelkodev.com/contacto. La exploración de nuevas herramientas y tecnologías es crucial en el campo del desarrollo web, y espero que este tutorial te haya proporcionado un buen punto de partida para tus propios proyectos de búsqueda.

Facebook
Twitter
Email
Print

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish