En este tema, aprenderemos cómo indexar datos en Elasticsearch. La indexación es el proceso de almacenar documentos en un índice para que puedan ser buscados y recuperados de manera eficiente. Vamos a cubrir los conceptos básicos, los métodos de indexación y algunos ejemplos prácticos.
Conceptos Clave
Antes de comenzar con la indexación de datos, es importante entender algunos conceptos clave:
- Documento: La unidad básica de información que puede ser indexada. Es similar a una fila en una base de datos relacional.
- Índice: Un contenedor que almacena documentos. Es similar a una tabla en una base de datos relacional.
- Tipo: Una categoría lógica dentro de un índice. En versiones recientes de Elasticsearch, el uso de tipos ha sido deprecado.
- ID: Un identificador único para cada documento dentro de un índice.
Métodos de Indexación
Hay varias formas de indexar datos en Elasticsearch:
- Indexación Individual: Indexar un solo documento a la vez.
- Indexación en Lote: Indexar múltiples documentos en una sola solicitud.
Indexación Individual
Para indexar un solo documento, utilizamos el método HTTP PUT o POST en la API de Elasticsearch. Aquí hay un ejemplo básico:
En este ejemplo:
mi_indicees el nombre del índice._doces el tipo de documento (en versiones recientes, se usa_docpor defecto).1es el ID del documento.- El cuerpo de la solicitud contiene el documento en formato JSON.
Indexación en Lote
Para indexar múltiples documentos en una sola solicitud, utilizamos la API _bulk. Aquí hay un ejemplo:
POST /_bulk
{ "index": { "_index": "mi_indice", "_id": "1" } }
{ "nombre": "Juan Pérez", "edad": 30, "ocupación": "Ingeniero" }
{ "index": { "_index": "mi_indice", "_id": "2" } }
{ "nombre": "Ana Gómez", "edad": 25, "ocupación": "Diseñadora" }En este ejemplo:
- Cada línea de metadatos (
{ "index": { ... } }) es seguida por una línea de datos del documento. _bulkpermite realizar múltiples operaciones (indexar, actualizar, eliminar) en una sola solicitud.
Ejemplo Práctico
Vamos a indexar algunos documentos en un índice llamado empleados.
Paso 1: Crear el Índice
Primero, creamos el índice empleados:
PUT /empleados
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"nombre": { "type": "text" },
"edad": { "type": "integer" },
"ocupación": { "type": "text" }
}
}
}Paso 2: Indexar Documentos Individualmente
Indexamos algunos documentos individualmente:
PUT /empleados/_doc/1
{
"nombre": "Juan Pérez",
"edad": 30,
"ocupación": "Ingeniero"
}
PUT /empleados/_doc/2
{
"nombre": "Ana Gómez",
"edad": 25,
"ocupación": "Diseñadora"
}Paso 3: Indexar Documentos en Lote
Indexamos múltiples documentos en una sola solicitud:
POST /_bulk
{ "index": { "_index": "empleados", "_id": "3" } }
{ "nombre": "Carlos López", "edad": 28, "ocupación": "Desarrollador" }
{ "index": { "_index": "empleados", "_id": "4" } }
{ "nombre": "María Fernández", "edad": 32, "ocupación": "Gerente" }Ejercicio Práctico
Ejercicio 1: Crear e Indexar Documentos
- Crea un índice llamado
productoscon los siguientes campos:nombre(texto),precio(flotante) ycategoría(texto). - Indexa los siguientes documentos en el índice
productos:{"nombre": "Laptop", "precio": 999.99, "categoría": "Electrónica"}{"nombre": "Silla", "precio": 49.99, "categoría": "Muebles"}{"nombre": "Café", "precio": 5.99, "categoría": "Alimentos"}
Solución:
- Crear el índice
productos:
PUT /productos
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 1
},
"mappings": {
"properties": {
"nombre": { "type": "text" },
"precio": { "type": "float" },
"categoría": { "type": "text" }
}
}
}- Indexar los documentos:
PUT /productos/_doc/1
{
"nombre": "Laptop",
"precio": 999.99,
"categoría": "Electrónica"
}
PUT /productos/_doc/2
{
"nombre": "Silla",
"precio": 49.99,
"categoría": "Muebles"
}
PUT /productos/_doc/3
{
"nombre": "Café",
"precio": 5.99,
"categoría": "Alimentos"
}Conclusión
En esta sección, hemos aprendido cómo indexar datos en Elasticsearch utilizando métodos individuales y en lote. Hemos cubierto los conceptos básicos y proporcionado ejemplos prácticos para ayudarte a comenzar. En la próxima sección, exploraremos cómo buscar datos en Elasticsearch.
Curso de Elasticsearch
Módulo 1: Introducción a Elasticsearch
- ¿Qué es Elasticsearch?
- Instalando Elasticsearch
- Conceptos Básicos: Nodos, Clústeres e Índices
- Arquitectura de Elasticsearch
Módulo 2: Empezando con Elasticsearch
Módulo 3: Técnicas Avanzadas de Búsqueda
Módulo 4: Modelado de Datos y Gestión de Índices
- Mapeo y Analizadores
- Plantillas de Índices
- Alias y Reindexación
- Gestión del Ciclo de Vida del Índice
Módulo 5: Rendimiento y Escalabilidad
- Optimizando el Rendimiento de Búsqueda
- Escalando Elasticsearch
- Monitoreo y Mantenimiento
- Respaldo y Restauración
Módulo 6: Seguridad y Control de Acceso
- Asegurando Elasticsearch
- Autenticación y Autorización de Usuarios
- Control de Acceso Basado en Roles
- Auditoría y Cumplimiento
Módulo 7: Integraciones y Ecosistema
- Elasticsearch con Logstash
- Elasticsearch con Kibana
- Elasticsearch con Beats
- Elasticsearch con Otras Herramientas
