Quizás es porque he trabajado con pocos datos, pero me resulta irrisorio actualizar los datos con otros que ya existen. Hasta pienso que hay duplicidad “excesiva” de estos.
Conceptos básicos para usar Elasticsearch
Lo que aprenderás sobre Elasticsearch
¿Qué es Elasticsearch?
Poner a correr Elasticsearch
Indexación de datos
Índices y documentos
Verbos HTTP
Mapeo de datos
Puntaje
Consultas
Tipos de cláusulas
Consultas booleanas
Consultas compuestas
Construyendo una consulta compuesta
Consultas anidadas
Proyecto: unificación de datos
Consultas de rango y agregaciones
Proyecto: revisión final del directorio
Cierre
Notas finales y cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Unificar modelos de datos es un paso crucial en la gestión de proyectos de datos. Facilita la creación de un índice integral que contiene toda la información necesaria, desde restaurantes hasta platos asociados. En este proceso, te enseñaremos cómo integrar estos elementos utilizando herramientas como Postman y Elasticsearch, para que puedas manejar toda la información desde un solo índice, simplificando así el mantenimiento y consulta de datos.
Para comenzar, realizarás varias consultas dentro de Postman que te permitirán conocer cómo están estructurados los mapeos actuales tanto de restaurantes como de platos:
Consulta del mapeo de restaurantes:
restaurantes_mapping
y haz un GET para obtener el mapeo.Consulta del mapeo de platos:
http://localhost:9200/platos_mapping
.Visualización de datos actuales de platos:
platos_search
para ver todos los platos almacenados.La clave para integrar todos los datos en un solo índice es actualizar el índice de restaurantes para que maneje no solo los datos de los restaurantes sino también los de los platos de manera anidada:
restaurantes_mapping
.Esta estructura te permitirá tratar los platos como parte de los restaurantes, haciendo el modelo de datos más cohesivo y fácil de gestionar.
Con el nuevo mapeo establecido, el siguiente paso es actualizar la información de cada restaurante individualmente usando POST para añadir detalles específicos. Aquí se explican algunos ejemplos prácticos sobre cómo realizar esta tarea:
Actualización de McDonald's:
restaurantes/_update/1
.Calificación
: 4.22.Dirección
: Calle Primera, Barrio Centro.Platos
: Añadir "Bull picante" previamente consultado.Última modificación
: Ahora a nivel del restaurante.Actualización de Burger King:
Calificación
: 3.75.Dirección
: Calle Segunda, Barrio Occidental.Platos
: Incluir "Nachos XL".Última modificación
: Cambia la información a [email protected]
, con fecha 1 de marzo.Actualización de Subway:
Dirección
: Calle Tercera, Barrio Norte.Platos
: Incluir "Ensaladísima".Estos pasos se realizan empleando la API de Elasticsearch, asegurando siempre que cada campo esté adecuadamente indentado y estructurado para su correcta actualización.
Esta guía proporciona las bases para realizar un manejo eficiente y unificado de los datos de un directorio de restaurantes y platos, permitiendo un control centralizado y una sencilla gestión de información. ¡Adelante y buen aprendizaje en tu camino hacia la manipulación avanzada de datos!
Aportes 7
Preguntas 2
Quizás es porque he trabajado con pocos datos, pero me resulta irrisorio actualizar los datos con otros que ya existen. Hasta pienso que hay duplicidad “excesiva” de estos.
{
"properties": {
"calificacion": { "type" : "double" },
"direccion": { "typer" : "text" },
"platos": {
"type" : "nested",
"properties" : {
"descripcion" : { "type" : "text" },
"estado" : { "type" : "keyword" },
"nombre" : { "type" : "text" },
"pedidosUltimHora" : { "type" : "integer" }
}
}
},
"ultimaModificacion" : {
"properties" : {
"fecha" : { "type" : "date" },
"usuario" : { "type" : "text" }
}
}
}```
Trabajar con este tipo de objetos uniendo los datos es un poco raro pero se entiende la idea.
UNIFICACIÒN
{
"properties": {
"calificacion": { "type" : "double" },
"direccion": { "type" : "text" },
"platos": {
"type" : "nested",
"properties" : {
"descripcion" : { "type" : "text" },
"estado" : { "type" : "keyword" },
"nombre" : { "type" : "text" },
"pedidosUltimHora" : { "type" : "integer" }
}
},
"ultimaModificacion" : {
"properties" : {
"fecha" : { "type" : "date" },
"usuario" : { "type" : "text" }
}
}
}
}
ACTUALIZACIÒN
{
"doc": {
"calificacion": 4.22,
"direccion": "Calle Sengundo, Barrio pyke",
"platos": [
{
"nombre": "Ensaladicima",
"descripcion": "Ensaladicima, salsa trucha, Ensaladicima negros, Ensaladicima trucha y Ensaladicima.",
"estado": "activo",
"pedidosUltimaHora": 12
}
],
"ultimaModificacion": {
"usuario": "[email protected]",
"fecha": "2020-02-19"
}
}
}
Por que el field “ultimaModificacion” no se le agrego la propiedad "“type”: “nested” ", si tambien es un objeto anidado
Puedo unir 2 indices?
Por ejemplo:
indice 1 : sku_id
indice 2 : sku_id
Como un inner join
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?