Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
¿Funciona correctamente el código de muestra de JavaScript de la API masiva de Elasticsearch?

Quiero usar el índice masivo de Elasticsearch con JavaScript y seguir el documento oficial . Básicamente, solo lo usé tal cual, pero arroja una excepción que dice que la solicitud masiva debe finalizar con un código de nueva línea, que parece ser líneas JSON. Mi pregunta es, si es así, ¿cómo puedo convertir las líneas JSON a JSON y luego pasarlas a la API masiva? ¿O me faltan algunas opciones al llamar a client.bulk?

 ResponseError: illegal_argument_exception: [illegal_argument_exception] Reason: The bulk request must be terminated by a newline [\n] at SniffingTransport.request

Uso Elasticsearch v7.15 y Node.js v16.15 en macOS.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Secundo esto. Estoy usando 8.2 y no funciona. Seguí el ejemplo exactamente y todavía arroja el error de nueva línea.

Solía poder pasar la operación seguida del documento en una matriz y funcionaría bien, pero parece haber sido "actualizado" para peor.

Seguiré probando a ver si se me ocurre algo.

EDITAR: OK. Encontré algo que funciona para mí y espero que funcione para usted también.

Hice un cliente secundario para reutilizar la conexión. Es bastante sencillo, pero aquí está el enlace: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/child.html

Modifiqué los encabezados de aceptación y tipo de contenido para ese cliente y el código para configurar el cliente se ve así:

 const es = require('@elastic/elasticsearch'); const es_hosts = [ 'https://elastic_host1', 'https://elastic_host2' ]; const es_client = new es.Client({ node: es_hosts }); const es_bulk = es_client.child({ headers: { 'accept': 'application/json', 'content-type': 'application/json' } })

Supongo que está pasando una matriz que tiene una operación y un documento. Convertiremos esa matriz en lo que equivale a ser una cadena grande, recordando agregar la nueva línea.

 let bulk_data = [ { index: { _index: 'my-index' } }, { id: 1, name: 'dave', job: 'janitor' } } ] let bulk_body = { body: bulk_data.map(JSON.stringify).join('\n') + '\n' } const results = await es_bulk.bulk(bulk_body);

Déjeme saber si esto ayuda.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda