Cliente Elasticsearch para Node.js: @elastic/elasticsearch

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cliente Elasticsearch para Node.js (@elastic/elasticsearch)



La biblioteca @elastic/elasticsearch es el cliente HTTP oficial de alto rendimiento para interactuar con Elasticsearch desde el entorno Node.js. Proporciona una API conveniente para realizar todas las operaciones: desde la indexación simple de documentos hasta consultas de búsqueda complejas y agregaciones. La biblioteca es totalmente compatible con todas las versiones de Elasticsearch 7.x y 8.x, incluyendo el trabajo con clústeres, autenticación y compresión de datos.



Instalación

Para la instalación, use npm o yarn:

npm install @elastic/elasticsearch# oyarn add @elastic/elasticsearch


Conexión básica

Cree una instancia del cliente especificando la dirección del servidor Elasticsearch. Para la versión 8.x, se requiere configuración TLS y una clave API o usuario/contraseña.

const { Client } = require('@elastic/elasticsearch');

// Conexión a un servidor local (Elasticsearch 7.x)const client = new Client({ node: 'http://localhost:9200' });

// Conexión a un servidor en la nube de Elastic Cloud (8.x)const cloudClient = new Client({ cloud: { id: 'my-cloud-id' }, auth: { apiKey: 'base64EncodedApiKey' }});


Operaciones principales



1. Indexación (agregar) de un documento

El método index agrega o reemplaza un documento en el índice especificado.

async function indexDocument() {  const result = await client.index({    index: 'articles',    id: '1',    body: {      title: 'Cliente Elasticsearch para Node.js',      content: 'Descripción detallada de la biblioteca...',      tags: ['elasticsearch', 'node.js'],      published: true,      views: 150    }  });  console.log('Documento indexado:', result.result);}indexDocument();


2. Búsqueda de documentos

El método search realiza una búsqueda de texto completo utilizando Query DSL.

async function searchDocuments() {  const { body } = await client.search({    index: 'articles',    body: {      query: {        bool: {          must: [            { match: { title: 'Elasticsearch' } },            { term: { published: true } }          ],          filter: [            { range: { views: { gte: 100 } } }          ]        }      }    }  });

console.log('Documentos encontrados:', body.hits.total.value); body.hits.hits.forEach(hit => { console.log(`- ${hit._source.title} (relevancia: ${hit._score})`); });}searchDocuments();


3. Obtener un documento por ID

async function getDocument() {  try {    const { body } = await client.get({      index: 'articles',      id: '1'    });    console.log('Documento:', body._source);  } catch (error) {    if (error.meta.statusCode === 404) {      console.log('Documento no encontrado');    } else {      console.error('Error:', error);    }  }}getDocument();


4. Actualización de un documento (parcial)

async function updateDocument() {  const { body } = await client.update({    index: 'articles',    id: '1',    body: {      doc: {        views: 151,        updated_at: new Date().toISOString()      }    }  });  console.log('Documento actualizado, versión:', body._version);}updateDocument();


5. Eliminación de un documento

async function deleteDocument() {  const { body } = await client.delete({    index: 'articles',    id: '1'  });  console.log('Resultado de la eliminación:', body.result);}deleteDocument();


Trabajo con agregaciones

Las agregaciones permiten obtener datos estadísticos basados en los resultados de búsqueda.

async function aggregateByTags() {  const { body } = await client.search({    index: 'articles',    body: {      size: 0, // no devolver los documentos en sí      aggs: {        popular_tags: {          terms: { field: 'tags.keywor                    

Recommendations