Aprender a crear documentos en Elasticsearch es el primer paso para trabajar con este motor de búsqueda. A través de Postman y unas pocas consultas HTTP, puedes insertar datos individuales o masivos sin necesidad de configurar previamente un índice. Aquí se explican las formas más prácticas de lograrlo.
¿Cómo crear un documento con un ID específico en Elasticsearch?
Para insertar un documento con un identificador definido por ti, se utiliza el verbo PUT en Postman [0:33]. La URL sigue esta estructura:
PUT localhost:9200/usuarios/_doc/1
- usuarios es el nombre del índice donde se almacenará el documento.
- _doc indica que se trata de un documento.
- 1 es el ID que tú asignas manualmente.
En el cuerpo de la petición seleccionas formato Raw y tipo JSON. El contenido puede ser tan simple como:
{
"nombre": "Rick",
"apellido": "Sánchez"
}
Al enviar la consulta, Elasticsearch responde confirmando que el documento con ID 1 fue creado exitosamente en la versión 1 [1:30]. El concepto de versionado es importante: Elasticsearch asigna internamente un número de versión a cada documento cada vez que se crea o modifica, lo que permite rastrear cambios.
¿Cuándo conviene que Elasticsearch genere el ID automáticamente?
Existe una segunda forma de crear documentos utilizando el verbo POST sin especificar un ID en la URL [1:50]:
POST localhost:9200/usuarios/_doc
En este caso, Elasticsearch genera un ID automático que es una cadena de texto larga y única. La elección entre ambas formas depende del caso de negocio:
- Si necesitas que el ID en Elasticsearch coincida con el de tu base de datos relacional, usa PUT con ID explícito.
- Si el ID no es relevante para tu lógica, usa POST y deja que Elasticsearch lo genere.
Otro detalle interesante es que los documentos dentro de un mismo índice no necesitan tener los mismos campos [2:26]. Por ejemplo, el segundo usuario solo tiene el campo nombre con valor "Marty Smith", sin apellido. Elasticsearch lo permite sin problema, lo que refleja su naturaleza schemaless.
¿Qué hace el parámetro refresh?
Al agregar ?refresh=true a la URL [2:42], el documento queda disponible para búsquedas de forma inmediata tras guardarse. Sin embargo, no se recomienda usarlo de forma habitual porque ralentiza el rendimiento. Solo es útil cuando existe una necesidad de negocio que exige disponibilidad instantánea en los resultados de búsqueda.
¿Elasticsearch crea el índice automáticamente?
Un comportamiento que vale la pena destacar: en ningún momento se creó el índice "usuarios" de forma manual [3:27]. Cuando envías un documento a un índice que no existe, Elasticsearch lo crea automáticamente. Esto simplifica el flujo de trabajo inicial, ya que puedes empezar a insertar datos sin pasos de configuración previos.
¿Cómo crear varios documentos al mismo tiempo con bulk?
Para insertar múltiples documentos en una sola petición se usa la API _bulk [3:55]. Primero, creas un archivo llamado usuarios.json con un formato específico donde cada par de líneas representa una operación:
{"index": {"_id": 3}}
{"nombre": "Beth", "apellido": "Smith"}
{"index": {"_id": 4}}
{"nombre": "Jerry", "apellido": "Smith"}
- La primera línea indica el índice y el _id del documento. El guión bajo delante de
id es una convención de Elasticsearch para palabras reservadas [4:18].
- La segunda línea contiene el JSON del documento.
- Es imprescindible terminar el archivo con un salto de línea vacío [4:55].
En Postman, la petición se configura así [5:05]:
POST localhost:9200/usuarios/_bulk
En el cuerpo seleccionas Binary en lugar de JSON, y adjuntas el archivo usuarios.json. Al enviar, la respuesta muestra "errors": false y una lista de items con el resultado de cada creación, confirmando que los documentos con ID 3 y 4 fueron creados en versión 1 [5:30].
Si quieres profundizar en cómo interactuar con estos documentos usando distintos verbos HTTP, comparte tus dudas o experiencias con estas operaciones.