No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Proyecto: unificación de datos

13/16
Recursos

¿Cómo unificar modelos de datos en un solo directorio?

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.

¿Qué consultas iniciales debo realizar?

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:

  1. Consulta del mapeo de restaurantes:

    • Dirígete a restaurantes_mapping y haz un GET para obtener el mapeo.
    • Te mostrará la estructura existente de mapeo con dos bloques definidos.
  2. Consulta del mapeo de platos:

    • Utiliza la ruta http://localhost:9200/platos_mapping.
    • Este mapeo es crucial para integrar los platos como parte de los restaurantes.
  3. Visualización de datos actuales de platos:

    • Accede a platos_search para ver todos los platos almacenados.
    • Esto es esencial a medida que unificamos esta información con los restaurantes.

¿Cómo actualizo el índice de restaurantes?

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:

  • Emplea el verbo PUT en la ruta restaurantes_mapping.
  • Define nuevas propiedades dentro de JSON para el índice:
    1. Calificación: tipo flotante, representa la puntuación del restaurante.
    2. Dirección: ayuda a localizar físicamente el restaurante.
    3. Platos: aquí los platos se convierten en un campo anidado para cada restaurante, reflejando sus detalles como nombre y descripción.
    4. Última modificación: a nivel de restaurante, ya no sobre el plato.

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.

¿Cómo realizo actualizaciones parciales de datos en Elasticsearch?

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:

  1. Actualización de McDonald's:

    • Ruta: restaurantes/_update/1.
    • Campos a actualizar:
      • 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.
  2. Actualización de Burger King:

    • Ruta similar a McDonald's pero con ID diferente.
    • Campos a actualizar:
      • 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.
  3. Actualización de Subway:

    • A diferencia de anteriores, Subway no tiene calificación inicial debido a su reciente inclusión en el directorio.
    • 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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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"
    }
  }
}
Para corregir la indentación se utiliza Shift + Tab

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