Introducción
En Elasticsearch, el mapeo y los analizadores son componentes esenciales para definir cómo se indexan y se buscan los datos. Este módulo te guiará a través de los conceptos clave y las prácticas recomendadas para trabajar con mapeos y analizadores en Elasticsearch.
Conceptos Clave
Mapeo (Mapping)
El mapeo en Elasticsearch es el proceso de definir cómo se almacenan y se indexan los documentos y sus campos. Es similar a la definición de una tabla en una base de datos relacional.
- Tipos de Datos: Define el tipo de datos de cada campo (texto, número, fecha, booleano, etc.).
- Propiedades de Campo: Configura propiedades adicionales como analizadores, formatos de fecha, etc.
- Campos Dinámicos: Permite la creación automática de campos no definidos previamente.
Analizadores (Analyzers)
Los analizadores en Elasticsearch son responsables de procesar el texto durante la indexación y la búsqueda. Un analizador se compone de tres partes principales:
- Tokenizador (Tokenizer): Divide el texto en términos o tokens.
- Filtros de Token (Token Filters): Modifican los tokens generados por el tokenizador.
- Filtros de Caracteres (Character Filters): Modifican el texto antes de que sea tokenizado.
Ejemplo Práctico: Definiendo un Mapeo y un Analizador
Paso 1: Crear un Índice con un Mapeo Personalizado
Primero, crearemos un índice llamado mi_indice
con un mapeo personalizado para un campo de texto.
PUT /mi_indice { "mappings": { "properties": { "titulo": { "type": "text", "analyzer": "standard" }, "fecha_publicacion": { "type": "date", "format": "yyyy-MM-dd" }, "contenido": { "type": "text", "analyzer": "custom_analyzer" } } } }
Paso 2: Definir un Analizador Personalizado
Ahora, definiremos un analizador personalizado llamado custom_analyzer
que utilizaremos en el campo contenido
.
PUT /mi_indice/_settings { "analysis": { "analyzer": { "custom_analyzer": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop"] } } } }
Explicación del Código
-
Índice y Mapeo:
titulo
: Campo de tipotext
que utiliza el analizador estándar.fecha_publicacion
: Campo de tipodate
con formatoyyyy-MM-dd
.contenido
: Campo de tipotext
que utiliza un analizador personalizado.
-
Analizador Personalizado:
custom_analyzer
: Un analizador que utiliza el tokenizador estándar y dos filtros de token:lowercase
(convierte los tokens a minúsculas) ystop
(elimina palabras vacías como "y", "o", "el").
Ejercicio Práctico
Ejercicio 1: Crear un Índice con Mapeo y Analizador Personalizado
-
Crea un índice llamado
blog
con los siguientes campos:titulo
: Tipotext
con el analizador estándar.autor
: Tipokeyword
.contenido
: Tipotext
con un analizador personalizado que convierta el texto a minúsculas y elimine palabras vacías.fecha
: Tipodate
con formatoyyyy-MM-dd
.
-
Define el analizador personalizado en la configuración del índice.
Solución
PUT /blog { "settings": { "analysis": { "analyzer": { "custom_analyzer": { "type": "custom", "tokenizer": "standard", "filter": ["lowercase", "stop"] } } } }, "mappings": { "properties": { "titulo": { "type": "text", "analyzer": "standard" }, "autor": { "type": "keyword" }, "contenido": { "type": "text", "analyzer": "custom_analyzer" }, "fecha": { "type": "date", "format": "yyyy-MM-dd" } } } }
Resumen
En esta sección, hemos aprendido sobre los mapeos y analizadores en Elasticsearch. Hemos visto cómo definir un mapeo para un índice y cómo crear un analizador personalizado. Estos conceptos son fundamentales para optimizar la indexación y búsqueda de datos en Elasticsearch.
Próximos Pasos
En el siguiente tema, exploraremos las plantillas de índices, que nos permitirán definir configuraciones y mapeos predeterminados para nuevos índices.
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