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 tipo text que utiliza el analizador estándar.
    • fecha_publicacion: Campo de tipo date con formato yyyy-MM-dd.
    • contenido: Campo de tipo text 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) y stop (elimina palabras vacías como "y", "o", "el").

Ejercicio Práctico

Ejercicio 1: Crear un Índice con Mapeo y Analizador Personalizado

  1. Crea un índice llamado blog con los siguientes campos:

    • titulo: Tipo text con el analizador estándar.
    • autor: Tipo keyword.
    • contenido: Tipo text con un analizador personalizado que convierta el texto a minúsculas y elimine palabras vacías.
    • fecha: Tipo date con formato yyyy-MM-dd.
  2. 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.

© Copyright 2024. Todos los derechos reservados