domain

Search

Sincronización del catálogo de productos (activities y boxes) hacia el índice de Elasticsearch que alimenta la búsqueda del sitio.

Domainsearch.*

Overview

El dominio Search mantiene sincronizado el índice products de Elasticsearch con los productos del monolito. Publica tres eventos —created, updated y deleted— disparados todos por la misma señal post_save de Django.

Los eventos created y updated llevan el documento completo del producto, no solo su id: el consumidor hace un upsert directo sin volver a consultar al monolito.

Info

created y updated son operacionalmente equivalentes para el consumidor (ambos hacen upsert). La distinción es informativa.

Doble transporte

El mismo documento de producto viaja por dos caminos distintos:

  1. Por eventos — este dominio, vía Pub/Sub.
  2. Por HTTPSearchIndexer.index()SearchServiceClient.sync_products_batch, usado para el sync completo y para la reconciliación de documentos obsoletos.

Solo el camino HTTP tiene reconciliación, así que un producto borrado de la base sin pasar por save() queda huérfano en el índice hasta el próximo full sync.

Arquitectura

publishes
event
routes to
consumes
publishes
event
routes to
subscribed by
publishes
event
routes to
publishes
event
routes to
publishes
event
routes to
Viewing
Service
Bigbox Backend(v1.0.0)
omega-backend+2
Event
Order Completed(v1)
omega-backend+1
Channel
Google Cloud Pub/Subv1.0.0
At least oncepubsub
ecommerzeta
Service
Analytics(v1.0.0)
ecommerzeta
Event
Product Created(v1)
ecommerzeta
Viewing
Service
Search(v1.0.0)
ecommerzeta
Event
Product Updated(v1)
ecommerzeta
Event
Product Deleted(v1)
ecommerzeta
Event
Availability Updated(v1)
alpha-centauri
  • services (3)
  • events (5)
  • channels (1)

Messages for this domain

Sends messages (5)

Quickly find the message you need by searching for the name, type, or summary.
NameVersionTypeSummary
Order Completed
v1eventUna orden de compra se completó exitosamente. Es el evento de conversión del negocio.
Product Created
v1eventSe creó un producto (Activity o Box) elegible para indexarse. Lleva el documento completo, no solo el id.
Product Updated
v1eventSe actualizó un producto (Activity o Box) elegible para indexarse. Lleva el documento completo. También es el evento del resync masivo.
Product Deleted
v1eventUn producto debe salir del índice de búsqueda. No significa borrado físico: significa que dejó de ser indexable.
Availability Updated
v1eventUn slot de reserva cambió su estado visible de disponibilidad. Evento delta y selectivo: solo se emite al cruzar el límite disponible ↔ no disponible.

Receives messages (4)

Quickly find the message you need by searching for the name, type, or summary.
NameVersionTypeSummary
Product Created
v1eventSe creó un producto (Activity o Box) elegible para indexarse. Lleva el documento completo, no solo el id.
Product Updated
v1eventSe actualizó un producto (Activity o Box) elegible para indexarse. Lleva el documento completo. También es el evento del resync masivo.
Product Deleted
v1eventUn producto debe salir del índice de búsqueda. No significa borrado físico: significa que dejó de ser indexable.
Availability Updated
v1eventUn slot de reserva cambió su estado visible de disponibilidad. Evento delta y selectivo: solo se emite al cruzar el límite disponible ↔ no disponible.