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_indice
es el nombre del índice._doc
es el tipo de documento (en versiones recientes, se usa_doc
por defecto).1
es 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. _bulk
permite 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
productos
con 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