Mapeo de Datos en Elastic Search: Creación y Modificación de Índices
Clase 6 de 16 • Curso de Introducción a Elasticsearch
Resumen
¿Por qué es esencial definir el mapeo de datos en Elasticsearch?
El mapeo de datos en Elasticsearch es una práctica fundamental para optimizar el rendimiento y precisión de las búsquedas. Como encargado de tus datos, eres quien mejor los conoce, y por ello es vital que especifiques un mapeo explícito al crear un índice.
Por ejemplo, en Elasticsearch puedes almacenar texto en dos tipos de datos: text
y keyword
. La diferencia principal radica en el operador de búsqueda que utilizan: text
usa el operador match
para búsquedas de texto completo, como las de Google, mientras que keyword
usa term
para buscar valores exactos. Imagínate que tienes un modelo llamado "platos" con un campo estado
. Si el campo es de tipo keyword
y buscas "active", no retornará "activo" porque busca un valor exacto. En cambio, si es de tipo text
, te ofrecerá coincidencias aproximadas como "activo" e "inactivo".
Además, Elasticsearch admite diversos tipos de datos estándares, incluyendo texto, fechas, números (enteros y flotantes), objetos y objetos geográficos. Definir estos tipos con precisión es crucial para que los datos se gestionen de forma eficiente.
¿Cómo crear un mapeo de datos en Elasticsearch con Postman?
Crear un mapeo en Elasticsearch utilizando Postman requiere seguir ciertos pasos organizados. A continuación te muestro cómo hacerlo:
- Inicia una nueva consulta con el verbo
PUT
. Esta consulta se dirigirá alocalhost:9200/platos
para crear un modelo llamado "platos". - En el cuerpo de la consulta, utiliza JSON para definir el mapeo:
- Comienza con la palabra
mappings
. - Incluye
properties
, donde se especifican las propiedades del índice. - Por ejemplo:
{ "mappings": { "properties": { "nombre": { "type": "text" }, "descripcion": { "type": "text" }, "pedidos_ultima_hora": { "type": "integer" }, "ultima_modificacion": { "type": "object", "properties": { "usuario": { "type": "text" }, "fecha": { "type": "date" } } } } } }
- Comienza con la palabra
- Envía la consulta. Al hacerlo, crearás exitosamente el índice de "platos" con el mapeo especificado.
Es importante señalar que si olvidas incluir una propiedad, no necesitas eliminar y recrear el índice. Simplemente puedes modificar el mapeo existente utilizando una nueva consulta PUT
apuntando a localhost:9200/platos/_mapping
, añadiendo los campos que faltan como el campo estado
de tipo keyword
para buscar valores exactos.
¿Cómo probar el mapeo con creación de documentos?
Probar tu mapeo es crucial para asegurarte de que se ha configurado correctamente. Sigamos estos pasos para crear documentos en el índice y verificar el mapeo:
-
Crea un documento en
platos/1
:- Utiliza una nueva consulta con
PUT
y apunta alocalhost:9200/platos/_doc/1
. - En el cuerpo JSON, añade los detalles del primer plato, por ejemplo:
{ "nombre": "Bow picante", "descripcion": "Pollo, salsa picante, frijoles, plátano y aguacate", "estado": "activo", "pedidos_ultima_hora": 42, "ultima_modificacion": { "usuario": "ric@mail.com", "fecha": "2020-02-19" } }
- Envía la consulta para crear el documento.
- Utiliza una nueva consulta con
-
Crea un segundo documento en
platos/2
:- Similar al paso anterior, dirige la consulta a
localhost:9200/platos/_doc/2
. - El cuerpo JSON puede lucir así:
{ "nombre": "Ensaladísima", "descripcion": "Aceitunas, cebolla, queso, tomate, aguacate (Saludable)", "estado": "activo", "pedidos_ultima_hora": 0, "ultima_modificacion": { "usuario": "ric@mail.com", "fecha": "2020-01-22" } }
- Envía la consulta, y verifica que el documento ha sido creado exitosamente.
- Similar al paso anterior, dirige la consulta a
Con estos métodos, puedes verificar que el índice de "platos" está funcionando correctamente según los datos del mapeo. Recuerda siempre que un mapeo bien definido optimiza las búsquedas y manejo de datos en Elasticsearch, permitiendo una eficiencia y precisión que se traduce en mejores resultados para tus consultas. ¡Sigue explorando y perfeccionando tus habilidades con Elasticsearch para maximizar su potencial!