<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Alexander Marquardt - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Alexander Marquardt - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/es/search-labs/author/alexander-marquardt</link>
    </image>
    <link>https://www.elastic.co/es/search-labs/author/alexander-marquardt</link>
    <atom:link href="https://www.elastic.co/es/search-labs/rss/author/alexander-marquardt.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[es]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 21:23:15 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Búsqueda con IA de agentes y barreras de protección determinísticas en Elasticsearch para una ejecución segura de consultas]]></title>
    <description><![CDATA[Los sistemas de búsqueda con IA de agentes suelen fallar cuando los LLM generan consultas directamente. Aprende cómo las barreras de protección deterministas y la arquitectura de plano de control permiten una ejecución de consultas segura, fiable y regulada con Elasticsearch.]]></description>
    <content:encoded><![CDATA[<p><a href="https://www.elastic.co/search-labs/blog/agentic-ai-search-deterministic-guardrail-query-execution">En las partes 1 a 7</a> de esta serie se describió un plano de control regulado para la búsqueda en el comercio electrónico. Un usuario introduce una consulta. El plano de control clasifica la intención, impone restricciones de negocio, resuelve conflictos de políticas y enruta a la estrategia de recuperación apropiada, todo antes de que se consulte el catálogo de productos. Toda la arquitectura asume que la entrada es un texto de búsqueda que ha escrito un comprador humano.</p><p>En esta última publicación nos preguntamos: ¿Qué cambia cuando la entrada proviene de un agente de IA?</p><p>La respuesta es que la arquitectura no cambia, pero las implicancias sí. Cada propiedad del plano de control regulada que es relevante para las consultas de autor humano es <em>más</em> importante cuando quien toma decisiones en sentido ascendente es un modelo de lenguaje grande (LLM). El determinismo, la auditabilidad, la resolución de conflictos y la aplicación de restricciones se convierten en medidas de seguridad fundamentales, en vez de simples comodidades operativas, ya que el sistema que genera los datos de entrada es de naturaleza probabilística.</p><h2>El problema de la búsqueda con agentes</h2><p>El enfoque más común para la búsqueda impulsada por IA es sencillo: proporciona al LLM el esquema de base de datos y las reglas de negocio en la indicación, y deja que el agente genere la consulta directamente.</p><p>Para un chatbot de comercio electrónico, esto significa inyectar el mapeo del índice, los tipos de campos, las taxonomías de categorías, la lógica de precios y las restricciones de negocio de Elasticsearch en la ventana de contexto del agente, y luego pedir al LLM que traduzca el lenguaje natural a un DSL de búsqueda de Elasticsearch válido. El LLM se convierte en el autor de la consulta.</p><p>Este enfoque funciona en demostraciones. Sin embargo, falla en producción por cuatro razones.</p><h3>Exceso de contexto</h3><p>El mapeo de índices de comercio electrónico empresarial no es un documento trivial. Las definiciones de campo, los objetos anidados, las configuraciones de varios campos y la configuración del analizador pueden ejecutarse en miles de tokens antes de que se agregue cualquier lógica de negocio. Además del mapeo, el agente necesita taxonomías de categorías (que en el comercio electrónico empresarial pueden contener decenas de miles de valores), reglas de precios, jerarquías de marcas, restricciones de elegibilidad y lógica de campañas.</p><p>El resultado es una ventana de contexto en la que predominan los metadatos estructurales en vez de la intención real del usuario. Esto aumenta la latencia, incrementa el costo de los tokens y reduce la capacidad del LLM para seguir instrucciones a medida que aumenta el contexto. Este es un fenómeno bien documentado, a veces llamado <a href="https://www.trychroma.com/research/context-rot"><em>descomposición de contexto</em></a>: a medida que el mensaje se hace más largo, la atención del modelo a cualquier instrucción particular se debilita.</p><h3>Alucinación probabilística</h3><p>Los LLM generan consultas basadas en patrones en sus datos de entrenamiento y el contexto proporcionado. Cuando se le solicita al modelo que genere un DSL de consulta de Elasticsearch, este puede inventar nombres de campos inexistentes, elaborar cláusulas de consulta sintácticamente inválidas, aplicar de forma errónea tipos de filtro a campos equivocados o generar consultas que son sintácticamente válidas pero semánticamente incorrectas, por lo cual arroja resultados que no coinciden con la intención del usuario.</p><p><a href="https://cloud.google.com/blog/products/databases/how-to-get-gemini-to-deeply-understand-your-database">La prueba de rendimiento BIRD</a> de Google Cloud para la conversión de texto a SQL muestra los límites de este enfoque. El resultado de vanguardia de un solo modelo de Google alcanzó entre un 70% y un 80% de precisión, lo que significa que casi una de cada cuatro consultas generadas era incorrecta. Esto es para SQL, que está mucho más estandarizado que Elasticsearch Query DSL. La tasa de error para consultas de Elasticsearch generadas por LLM en un entorno de producción real, con mapeos complejos y semántica específica del negocio, probablemente sería mayor.</p><p>Una tasa de error de una de cada cuatro consultas en un sistema de comercio electrónico que es fundamental para los ingresos no es un problema de ajuste que deba resolverse de forma iterativa. Es una limitación arquitectónica del enfoque.</p><h3>La brecha de seguridad</h3><p>Cuando el LLM tiene acceso al esquema de la base de datos y actúa como el autor de la consulta, el sistema es vulnerable a la inyección indirecta de indicaciones. Un usuario que interactúa con un chatbot de comercio electrónico puede crear entradas diseñadas para manipular al agente y que genere consultas no intencionadas.</p><p>No se trata de un riesgo teórico. La <a href="https://www.elastic.co/blog/owasp-top-10-for-llms-guide">inyección de indicaciones</a> es una de las superficies de ataque que más se investiga de forma activa en sistemas de MLM desplegados. El problema fundamental es que, cuando el agente crea la consulta, no hay una separación clara entre la intención del usuario y la ejecución de la consulta. El LLM interpreta la solicitud del usuario y, al mismo tiempo, crea la operación de la base de datos. Cualquier manipulación de la primera afecta directamente a la segunda.</p><h3>Fallo de escalado de alta cardinalidad</h3><p>Ciertos campos del comercio electrónico tienen una cardinalidad extrema. Un catálogo de productos puede tener 17 000 valores de categoría, miles de marcas y cientos de combinaciones de atributos. Los flujos de trabajo estándar de los agentes requieren inyectar estos valores en el contexto para que el LLM pueda seleccionar el correcto al construir una consulta.</p><p>Esto crea un dilema imposible: se inyectan todos los valores posibles (consumiendo un contexto enorme y degradando el rendimiento), se inyecta un subconjunto (y se acepta que el agente no puede hacer referencia a valores fuera de ese subconjunto) o se recurre a una búsqueda no regulada. Esto se conecta directamente con el problema principal de la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">Parte 1</a>: si el LLM busca “naranjas” y Elasticsearch devuelve refresco de naranja, la experiencia de chat se degrada de la misma manera que lo hace una experiencia de búsqueda.| La ausencia de gobernanza significa que el sistema no puede aplicar la resolución prevista por el comprador.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt14a980ba09d88ee8/6a16f34d66c4f98516f8bd97/f11c44feb5291002d4ec4ac79484ea39d4e48a95-642x133.png" alt="Un diagrama de flujo muestra la solicitud de usuario &quot;Quiero hacer una bebida refrescante...&quot;, la cual conduce a una salida LLM de “naranjas”, seguida de un servidor de aplicaciones que envía una consulta de texto para naranjas a un catálogo de productos, terminando con resultados que muestran mermelada, naranjas enteras y refresco de naranja." /><p>Recuperar valores relevantes que estén dinámicamente basados en la consulta es una alternativa conocida, pero introduce un paso adicional no determinista donde la recuperación en sí puede omitir valores relevantes. Además, esto agrega latencia y complejidad a cada consulta.</p><h2>La alternativa arquitectónica: desacoplar la intención de la ejecución</h2><p>El plano de control regulado descrito en las Partes 1 a 7 ofrece un enfoque totalmente diferente. En vez de que el LLM elabore la consulta final, su papel se reduce a una sola tarea bien delimitada: extraer un texto de intención de búsqueda de la entrada de lenguaje natural del usuario.</p><p>El usuario dice: "Estoy buscando zapatos marrones baratos". La función del agente no es generar una consulta de Elasticsearch. Su función es extraer y transmitir la intención de búsqueda (en este caso, algo como "zapatos marrones baratos") al plano de control. Entonces, el plano de control hace lo de siempre: filtra la intención de texto por las políticas almacenadas, compone las políticas coincidentes mediante transformaciones en cascada, resuelve los conflictos de forma determinista y produce una consulta de Elasticsearch controlada.</p><p>El LLM nunca ve el mapeo de índice. Nunca sabe sobre tipos de campos, taxonomías de categorías o umbrales de precios. Nunca construye una cláusula de consulta. Opera en el lado del lenguaje natural de un límite arquitectónico que llamamos el <em>espacio aéreo de metadatos</em>, una separación estricta entre el componente probabilístico (el LLM) y la capa de datos estructurados (esquema, políticas y construcción de consultas).</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb4d701bfa4f2f279/6a16f34e1949f70ddce7a78d/12dacc77f0c481c9ada84725eff370c7e2c4b429-642x143.png" alt="Un diagrama de flujo muestra la solicitud del usuario, &quot;Quiero preparar una bebida refrescante...&quot;, que lleva a una salida LLM de &quot;naranjas&quot;, seguida de un servidor de aplicaciones que envía la consulta a un plano de control y luego recibe una consulta reescrita, que se emplea para realizar una consulta de texto para naranjas en la categoría Frutas, finalizando con una búsqueda de producto que devuelve imágenes de naranjas." /><h3>Lo que proporciona el aislamiento de metadatos</h3><ul><li><p><strong>Ceguera de esquema.</strong> El LLM no tiene acceso al esquema de la base de datos y, por lo tanto, no puede generar consultas inválidas, alucinar nombres de campo ni ser manipulado para exponer información estructural. El esquema existe solo en el lado determinista del aislamiento.</p></li><li><p><strong>Contexto mínimo.</strong> En vez de miles de tokens de datos de mapeo, reglas de negocio y taxonomías de categorías, la indicación del LLM contiene solo instrucciones de extracción de persona e intención. Esto reduce drásticamente el costo de tokens, la latencia y la degradación del contexto.</p></li><li><p><strong>Ejecución determinista.</strong> Cada consulta que llega a Elasticsearch está construida por el plano de control usando plantillas de políticas controladas por humanos, no generadas probabilísticamente por un LLM. La validez sintáctica está garantizada. La corrección semántica se aplica mediante el mismo marco de políticas descrito en las Partes 1 a 6.</p></li><li><p><strong>Seguridad por arquitectura.</strong> La inyección inmediata deja de ser eficaz desde el punto de vista estructural. Incluso si un usuario manipula al agente para que produzca un texto de intención inusual, ese texto se filtrará por las políticas almacenadas. Si ninguna política coincide, no se genera ninguna consulta. El usuario no puede pedirle al agente que cree una consulta porque el agente no crea consultas. El plano de control lo hace, y el plano de control es determinista.</p></li></ul><h2>Cómo se conectan las piezas</h2><p>El siguiente recorrido muestra cómo el plano de control regulado maneja una consulta mediada por agente.</p><h3>Paso 1: El usuario habla con el agente</h3><p>Un comprador que interactúa con un chatbot de comercio electrónico dice: "Estoy buscando chocolate barato, nada con maní."</p><h3>Paso 2: El agente extrae la intención</h3><p>La función del LLM es extraer intenciones, no generar consultas. Con un prompt mínimo que le indica identificar la intención del producto, el agente produce un texto de intención de búsqueda: "chocolate barato sin maní".</p><p>Esta es una tarea de clasificación sencilla. El LLM no necesita el mapeo de índice, la taxonomía de categorías ni las reglas de precios para realizarlo. Necesita entender el lenguaje natural, que es precisamente la fortaleza de los LLM.</p><h3>Paso 3: El plano de control regula la consulta</h3><p>El texto de intención "chocolate barato sin maní" se pasa al plano de control, que lo filtra por el índice de políticas. Tres políticas coinciden:</p><ul><li><p>La política de "barato" (extrae "barato", aplica un filtro de precio basado en la categoría del producto).</p></li><li><p>La política de "chocolate" (limita los resultados a categorías de chocolate).</p></li><li><p>La política de negación "sin" (extrae el objetivo de exclusión y aplica un filtro <code>must_not</code> )</p></li></ul><p>El plano de control aplica estas políticas mediante la misma transformación en cascada descrita en la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3 y la Parte</a> <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">4</a>: orden de prioridad, resolución de conflictos por campo, seguimiento de frases consumidas. Si una política de “campaña navideña” también está activa, se compone con las políticas del producto exactamente como se describe en <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3,</a> la participación del agente no cambia el modelo de gobernanza en absoluto.</p><h3>Paso 4: Se ejecuta la consulta regulada</h3><p>El plano de control produce una consulta de Elasticsearch completamente regulada: una búsqueda de “chocolate”, limitada a las categorías adecuadas, con un límite de precio derivado de la política “barato”, un filtro de exclusión para productos que contienen maní y cualquier impulso activo de campaña aplicado. Si la política de “chocolate” también incluye pesos de optimización económica (<a href="https://www.elastic.co/search-labs/blog/ecommerce-search-optimization-query-governed">Parte 7</a>), estos también se aplican. El aumento de margen está establecido en 3.0x porque “chocolate” es una consulta de navegación donde el minorista se beneficia de promover productos de mayor margen. Si el comprador tiene historial de compras (<a href="https://www.elastic.co/search-labs/blog/elasticsearch-personalized-search-governed-ecommerce">Parte 6</a>), las señales de personalización se superponen. Esta consulta es sintácticamente válida por construcción y semánticamente correcta por diseño de políticas.</p><h3>Paso 5: Los resultados se envían a través del agente</h3><p>Los resultados del producto se arrojan al agente, que los presenta de forma conversacional al usuario. El papel del agente en la ruta de retorno es la presentación: formatear resultados, responder preguntas de seguimiento, proporcionar detalles del producto. La recuperación en sí fue regulada, determinista y explicable.</p><h2>En qué es bueno el agente (y en qué no lo es)</h2><p>Esta arquitectura aprovecha las fortalezas del LLM y protege al sistema de sus debilidades.</p><p>Los LLM sobresalen en la comprensión de la intención del lenguaje natural. “Estoy buscando chocolate barato, nada con maní” es una tarea de comprensión del lenguaje natural, análisis de intención, identificación de referencias de productos, reconocimiento de negación. Los LLM gestionan esto de forma fiable porque es un problema de clasificación, no de generación. La salida es un texto corto de intenciones, no una consulta estructurada y compleja.</p><p>A los modelos de lenguaje grande (LLM) les cuesta generar salidas estructuradas con precisión bajo restricciones complejas. La generación de una DSL de consulta de Elasticsearch válida requiere nombres de campo exactos, anidación correcta de cláusulas, tipos de filtro adecuados para cada campo y una aplicación coherente de reglas de negocio en miles de casos límite. Estas son exactamente las propiedades que un sistema determinista impone de forma trivial y que un sistema probabilístico impone de forma poco fiable.</p><p>El plano de control regulado coloca cada componente donde corresponde: el LLM en el lado del lenguaje natural, el motor de políticas deterministas en el lado de construcción de consultas, y un límite arquitectónico entre ellos.</p><h2>La gobernanza limita el alcance del impacto</h2><p>Esta es la misma información de la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>, extendida al contexto agente. En la Parte 3, observamos que la gobernanza hace que la recuperación semántica sea más segura, ya que reduce el conjunto de candidatos antes de que comience la recuperación. Una búsqueda semántica sobre 500 productos en una categoría regulada es una propuesta muy diferente a una búsqueda semántica sobre 500 000 SKU.</p><p>El mismo principio se aplica a las consultas mediadas por agentes. Sin gobernanza, un agente que malinterprete "chocolate barato" podría generar una consulta que realice una búsqueda en todo el catálogo sin restricciones de precio, sin filtro de categoría y sin exclusiones. Con gobernanza, incluso si el agente produce un texto de intención imperfecto, el plano de control restringe la consulta a las políticas que coinciden. El peor caso es que se activen menos políticas, no que una consulta sin límite acceda al catálogo de productos.</p><p>La gobernanza reduce el alcance de los errores probabilísticos. Esto es cierto tanto si el componente probabilístico es un modelo de recuperación semántica como un agente LLM.</p><h2>Políticas sugeridas por LLM: ampliar la cobertura</h2><p><a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">La Parte 2</a> presentó la idea de que un LLM puede sugerir nuevas políticas que ingresen en el mismo pipeline Author → Test → Promote que las de autoría humana. En el contexto de agentes, esto se convierte en un ciclo de retroalimentación poderoso.</p><p>Un LLM puede analizar registros de consultas, identificar patrones donde el plano de control no tiene una política coincidente (consultas que llegan a la recuperación sin modificaciones) y sugerir nuevas políticas para cubrir esas brechas. Un comerciante revisa cada sugerencia, la prueba y la promueve si produce el comportamiento esperado. El modelo de gobernanza asegura que ninguna política sugerida por LLM llegue a producción sin validación humana.</p><p>Con el tiempo, esto crea un ciclo virtuoso: la cobertura de políticas del plano de control se expande, la proporción de consultas que requieren una recuperación sin modificar se reduce, y el sistema se vuelve cada vez más regulado, con cada política auditable, versionada e individualmente reversible.</p><h2>El patrón general: barreras de seguridad deterministas para sistemas probabilísticos</h2><p>La arquitectura descrita en este serial, un plano de control determinista situado entre una fuente de entrada probabilística y un sistema de recuperación de datos, no es específica de la búsqueda en el comercio electrónico. El mismo patrón se aplica siempre que un agente de IA necesite interactuar con datos estructurados.</p><p>Un agente que consulta una base de datos SQL se enfrenta a los mismos desafíos: exceso de contexto por inyección de esquemas, nombres de columnas alucinados, riesgos de inyección inmediata y selección de valores de alta cardinalidad. Un agente que trabaja con un sistema de gestión de incidencias como Jira, un sistema de gestión de relaciones con los clientes (CRM) como Salesforce o un repositorio de código como GitHub se enfrenta a problemas similares. En todos los casos, la pregunta arquitectónica del núcleo es la misma: ¿Debe el LLM crear la consulta, o debe el LLM extraer la intención y pasarla a una capa determinista que crea la consulta?</p><p>El plano de control regulado proporciona una respuesta repetible a esa pregunta. Las políticas son datos. La función del LLM es extraer intenciones. El plano de control se ocupa de desarrollar consultas. El espacio de metadatos los mantiene separados. Y el marco de trabajo (orden de prioridad, resolución de conflictos, transformaciones en cascada, auditabilidad) asegura que la capa determinista sea operacionalmente manejable a medida que aumenta el número de políticas.</p><h2>Conclusión</h2><p>Los patrones de gobernanza de búsqueda en comercio electrónico descritos en este serial (políticas como datos, el flujo de trabajo Author → Test → Ascender flujo de trabajo, transformaciones en cascada, resolución de conflictos por campo, coincidencia inversa basada en filtro y respaldo multinivel) se diseñaron para un mundo donde el comerciante redacta políticas y el cliente tipifica consultas. Pero la arquitectura tiene más potencial que su caso de uso inicial.</p><p>Cuando la fuente de entrada es un agente de IA en vez de un comprador humano, el plano de control regulado se convierte en la capa de seguridad fundamental entre un sistema probabilístico y un almacén de datos de producción. Ofrece las garantías determinísticas (validez sintáctica, corrección semántica, auditabilidad y seguridad) que necesitan los sistemas empresariales y que los modelos de lenguaje grande (LLM) no pueden ofrecer por sí solos.</p><p>El plano de control determinista no reemplaza al agente de IA. Hace que el agente de IA sea seguro para desplegar.</p><h2>Pon en práctica la búsqueda gobernada de comercio electrónico</h2><p>La arquitectura del plano de control regulado descrita en este serial, desde el paradigma de política como datos hasta la búsqueda basada en filtro, personalización, optimización económica y el aislamiento de agente, fue diseñada y desarrollada por Elastic Services Engineering. Todos los patrones que se describen en esta serie provienen de un sistema operativo creado y validado con catálogos de productos a escala empresarial.</p><p>Si tu equipo está desarrollando experiencias de búsqueda impulsadas por IA y necesita límites deterministas para consultas mediadas por agentes, o si quieres implementar una arquitectura de búsqueda regulada y editable por el negocio en Elasticsearch, Elastic Professional Services puede acelerar tu implementación. Ponte en contacto con <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Únete a la discusión</h2><p>¿Tienes preguntas sobre la gestión de búsquedas, las estrategias de recuperación o la arquitectura de búsqueda en el comercio electrónico? Únete a la <a href="https://discuss.elastic.co/">conversación general de la comunidad de Elastic</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/agentic-ai-search-deterministic-guardrail-query-execution</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/agentic-ai-search-deterministic-guardrail-query-execution</guid>
    <category><![CDATA[Operaciones]]></category>
    <dc:creator><![CDATA[Alexander Marquardt,Honza Král,Taylor Roy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt5b5aa5493a75281a/6a16f3490811ae71b8e9fe94/769cdc7b53cbb222f52095193cd423277e8017d9-1280x720.png" length="0" type="image/png"/>
    <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Personalización de la búsqueda en comercio electrónico: integración del historial de compras y cohortes de usuarios]]></title>
    <description><![CDATA[Aprende a crear una experiencia de búsqueda personalizada en Elasticsearch sin infringir la gobernanza. En esta publicación se explica cómo destacar los productos que un comprador ha adquirido previamente y cómo activar políticas específicas de cohortes basadas en perfiles de usuario.]]></description>
    <content:encoded><![CDATA[<p>En las <a href="https://www.elastic.co/search-labs/blog/series/governed-search-patterns">partes 1 a 5</a> de esta serie se describe un plano de control gobernado que clasifica la intención, impone restricciones, resuelve conflictos de políticas y enruta a la estrategia de recuperación apropiada, todo antes de que se consulte el catálogo de productos. Todos los mecanismos descritos hasta ahora tratan a todos los compradores de la misma manera. Una búsqueda de “chocolate” produce el mismo conjunto de resultados, independientemente de si el comprador es vegano, un padre que compra para el cumpleaños de su hijo o un consumidor que observa las leyes halal.</p><p>En esta publicación se presentan dos mecanismos de personalización que amplían el plano de control gestionado sin modificar su arquitectura. Ambos mecanismos se apilan multiplicativamente con la capa de gobernanza de las partes 1 a 5: las políticas aún se activan, las restricciones aún se aplican, los conflictos aún se resuelven y las señales de personalización se componen en la misma consulta gobernada, lo que asegura que los resultados que devuelve Elasticsearch ya están personalizados.</p><p>El primer mecanismo impulsa los productos que el comprador individual ha adquirido anteriormente. El segundo activa políticas específicas de cohorte basadas en el perfil del comprador. En conjunto, demuestran que la personalización no es un sistema separado que se combina con la búsqueda ni se aplica como procesamiento posterior a la recuperación; es una extensión natural del plano de control orientado a políticas.</p><p>Para profundizar en las matemáticas de las técnicas de personalización utilizadas en esta publicación, consulta <a href="https://alexmarquardt.com/elastic/personalizing-search-in-elasticsearch-without-ml-post-processing/">Personalización de la búsqueda en Elasticsearch sin postprocesamiento de ML</a> y <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-relevance-cohort-aware-ranking-elasticsearch">Clasificación basada en cohortes en Elasticsearch</a>.</p><p>Para ver una demostración en vivo de cómo se puede usar el historial de compras para mejorar los resultados de búsqueda de los clientes que regresan, mira el video: <a href="https://www.youtube.com/watch?v=TGf_pOWHA5M">Personalización explicable: cómo impulsar la búsqueda con historial de compras</a>.</p><h2>Impulso del historial de compras individuales</h2><p>La forma más simple de personalización es también una de las más efectivas: si un comprador ha adquirido un producto antes, promuévalo cuando haga una búsqueda de algo relacionado. Un comprador que adquiere habitualmente una marca concreta de galletas con pepitas de chocolate debería ver esas galletas mejor posicionadas en los resultados de búsqueda cuando busque “galletas”, no porque un modelo predijo una preferencia, sino porque existe evidencia conductual directa.</p><h3>Cómo funciona</h3><p>Cuando una solicitud de búsqueda incluye un identificador de usuario, como sería el caso de un usuario que tiene una sesión abierta, el plano de control ejecuta dos consultas de Elasticsearch en paralelo utilizando un thread pool:</p><ol><li><p>La consulta del percolador contra el índice de políticas (la misma búsqueda de gobernanza descrita en las partes 3 y 4).</p></li><li><p>Una búsqueda de historial de compras contra un índice de <code>user_purchases</code>, filtrada al usuario específico por <code>term(user_id)</code> y luego comparando el texto de búsqueda actual con los títulos de producto de ese usuario.</p></li></ol><p>Estos procesos se ejecutan en paralelo (ninguno espera al otro), así que la búsqueda de personalización no agrega una latencia significativa al pipeline de gobernanza.</p><p>La búsqueda del historial de compras utiliza <a href="https://www.elastic.co/docs/manage-data/data-store/text-analysis">el análisis de texto de Elasticsearch</a> (derivación, tokenización) al comparar la cadena de búsqueda actual con los títulos de los productos almacenados. Esto significa que una búsqueda de “cookies” coincidirá con una compra anterior de “galletas brownie” a través del análisis de texto estándar, sin requerir una coincidencia exacta de cadenas.</p><h3>Cálculo de pesos de aumento</h3><p>No todas las compras anteriores merecen el mismo impulso. La ponderación considera dos factores intuitivos: la frecuencia con la que el comprador adquirió el producto y qué tan reciente fue la compra. Un producto comprado 15 veces la semana pasada es una señal mucho más fuerte que un producto comprado una vez hace seis meses. La ponderación utiliza una escala logarítmica basada en la frecuencia (para que un único artículo comprado en grandes cantidades no eclipse al resto) y un decaimiento exponencial basado en la antigüedad (para que las compras más antiguas pierdan relevancia de forma natural con el tiempo).</p><p>Para conocer los detalles matemáticos de la fórmula de aumento, consulta <a href="https://alexmarquardt.com/elastic/personalizing-search-in-elasticsearch-without-ml-post-processing/">Cómo personalizar la búsqueda en Elasticsearch sin posprocesamiento de ML</a>.</p><h3>Cómo se convierte en una consulta</h3><p>Los impulsos del historial de compras se integran en la consulta como la capa de puntuación más externa, envolviendo los filtros de política de gobernanza y los impulsos de las partes 3 y 4 y cualesquier<a href="https://www.elastic.co/search-labs/blog/function-score-query-boosting-profit-popularity-elasticsearch"> impulso de señales comerciales, como margen y popularidad</a> (que exploraremos en la parte 7). Esto significa que un producto que se elimina por una política de gobernanza no reaparecerá debido a un impulso en el historial de compras. La <em>gobernanza</em> controla el conjunto de resultados; la <em>personalización</em> ajusta el orden dentro de él. Los productos sin historial de compras no se penalizan. Se mantiene su clasificación gobernada, aunque los productos con un historial de compras relevante aparecerán por encima de ellos, en igualdad de condiciones.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt731e67dfd3bd6ee2/6a17e9523e9e4582bbba14b6/80f0285bd80935703d39b7a4e1fd6094d71af0aa-545x273.jpg" alt="Un diagrama de flujo muestra cómo la búsqueda de “naranjas” de un usuario se mueve a través de un servidor de aplicaciones, un plano de control, el historial de compras y las búsquedas de políticas, y luego a un índice de catálogo de productos para devolver resultados de productos de naranja." /><h3>¿Por qué consultar Elasticsearch en cada búsqueda?</h3><p>El historial de compras se consulta desde Elasticsearch en cada búsqueda, en lugar de almacenarse en caché en la capa de la aplicación. Esta es una decisión de diseño deliberada. Como la consulta compara la cadena de búsqueda actual con los títulos de productos mediante el pipeline de análisis de texto de Elasticsearch, el sistema se beneficia de la misma reducción a la raíz, tokenización y manejo del lenguaje que usa la propia búsqueda de productos. Una consulta en memoria caché requeriría reimplementar ese análisis o aceptar una coincidencia menos precisa.</p><p>Para ver por qué este orden es importante, considere a un comprador que previamente adquirió jugo de naranja y ahora busca “naranjas”. La consulta de historial de compras compara “jugo de naranja” con el término de búsqueda “naranjas” mediante análisis de texto y calcula un impulso para ese producto. Pero la capa de gobernanza ya ha restringido las “naranjas” a la categoría de productos, filtrando completamente el jugo de naranja. El impulso del historial de compras para el jugo de naranja está presente en la consulta, pero no tiene efecto porque no hay un documento coincidente en el conjunto de resultados gobernado sobre el que pueda actuar. El comprador ve naranjas frescas, ordenadas por relevancia y personalización. La barrera de seguridad de gobernanza se mantiene.</p><p>El costo de rendimiento es mínimo: el índice de historial de compra es pequeño (el historial de compra de un usuario suele ser de decenas o cientos de documentos, no de millones), y la consulta se ejecuta en paralelo con la búsqueda del percolador, por lo que no alarga la ruta crítica.</p><h3>Ejemplo de búsqueda para “agua de manantial” sin historial de usuario</h3><p>Si un usuario que no ha iniciado sesión o un usuario que nunca ha comprado “agua de manantial” busca, es posible que vea resultados similares a los siguientes:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt90249896bcf2b8c2/6a17e954af47b685f5cddfcf/1d03558c8f6492a0999e1ac4f1d22680c8f3a6ce-1130x1028.png" alt="Una página web muestra resultados de búsqueda para “agua de manantial”, mostrando una barra de búsqueda, filtros de categoría y marca, y tres listados de productos con detalles como marca, composición y precio." /><h3>Ejemplo de historial de compra del usuario</h3><p>Por otro lado, una usuaria llamada Carol tiene un historial de compras que contiene los siguientes productos:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3aa784ccb0653a0d/6a17e95563baffd6b7741c8d/31c1fb789efc6cef673984e9711d571efce8ed27-661x523.png" alt="Una interfaz digital titulada “Perfil de compras” muestra a una compradora llamada Carol con dos cohortes y una lista de artículos comprados recientemente, lo que incluye cantidades, fechas de última compra y tiempo desde cada compra." /><h3>Ejemplo de búsqueda de “agua de manantial” con el historial de compras anterior</h3><p>Si Carol busca “agua de manantial”, verá resultados personalizados que reflejan lo que ha comprado en el pasado. Al observar el historial de compras anterior, ella compró “agua de manantial carbonatada” (la botella verde) unas 40 veces, y más recientemente hace dos días. Si busca “agua de manantial”, ese producto aparecerá en los primeros resultados, ya que sabemos que le gusta. Observa que en los resultados no personalizados, el agua de manantial Rubicon fue el primer resultado en aparecer.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf243c5ef1a1808ba/6a17e95763baff5d73741c91/6fce63ff051e345a79fef934cd6e71ba113ae585-1159x1062.png" alt="Una página web muestra los resultados de búsqueda de “agua de manantial”, la lista de detalles del producto, precios y categorías de filtros para bebidas y marcas." /><h2>Activación de políticas con reconocimiento de cohortes</h2><p>El historial de compras individual funciona bien para los clientes habituales con un comportamiento ya establecido. Pero muchos compradores son nuevos, anónimos o navegan fuera de sus hábitos habituales. Para estos compradores, la membresía de cohorte proporciona un tipo diferente de personalización, una basada en quién es el comprador, no en lo que han hecho.</p><p>Un comprador vegano que busque “chocolate” debería ver el chocolate vegano clasificado más alto. Un comprador que sigue las normas halal y busca “refrigerios” debería ver opciones con certificación halal en un lugar destacado. Un comprador consciente de la salud que busca “yogur” debería ver opciones probióticas resaltadas.</p><h3>Cohortes como políticas, no como etiquetas de productos</h3><p>Los productos ya llevan sus atributos normales, incluidos campos como <code>dietary_restrictions: ["vegan"]</code> o <code>dietary_restrictions: ["halal"]</code>. La pregunta es dónde reside la lógica que conecta la cohorte de un comprador con esos atributos de producto.</p><p>El enfoque ingenuo sería codificar ese mapping en la capa de aplicación o en la plantilla de búsqueda: si el usuario es vegano, agrega un impulso a <code>dietary_restrictions: "vegan"</code>. Pero este es el mismo código espagueti de la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">parte 1</a>, y crea la misma fricción operativa: agregar una nueva cohorte o cambiar lo que significa una cohorte requiere un cambio de código.</p><p>En cambio, el plano de control gestionado mantiene la lógica de cohortes en el motor de políticas. Una política de cohorte combina dos cosas: la membresía de cohorte de un comprador (por ejemplo, “vegana”) y un atributo de producto (por ejemplo, <code>dietary_restrictions: “vegan”</code>). La política define la conexión: cuando un comprador en la cohorte vegana realiza una búsqueda, impulsa los productos donde <code>dietary_restrictions</code> incluye “vegano”.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte15937af719dff39/6a17e95925daab370608a274/2b6fe359774bbea059aaf93f3fa4a03eb31233ea-544x290.jpg" alt="" /><p>Como la lógica de cohortes reside en el motor de políticas y no en el código de aplicación, esto significa lo siguiente:</p><ul><li><p>Para añadir una nueva cohorte, basta con crear una nueva política; no es necesario volver a indexar el producto.</p></li><li><p>Las políticas de cohorte utilizan el motor de reglas completo: pueden agregar filtros, aplicar impulsos suaves, expandir sinónimos, cambiar la estrategia de recuperación o realizar cualquier otra acción que una política pueda tomar.</p></li><li><p>El comportamiento de la cohorte se gestiona a través de la misma interfaz de administración que todas las demás políticas: un comerciante puede crear, probar y promover políticas de cohorte a través del flujo de trabajo Autor → Prueba → Promoción descrito en la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">parte 2</a>.</p></li></ul><h3>Ejemplo de política de cohorte vegana</h3><p>Un merchandiser crea una política de cohorte con las siguientes características:</p><ul><li><p><strong>Cohortes:</strong> <code>["vegan"]</code>.</p></li><li><p><strong>Criterio de coincidencia:</strong> coincide con cualquier búsqueda (o una categoría específica de producto).</p></li></ul><p><strong>Acción:</strong> refuerzo leve en <code>dietary_restrictions: "vegan"</code> con una ponderación de refuerzo de 2.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt835034b54f6790b8/6a17e95b7b54f980408b391e/fc58bbd97c0dd1fa3ce757394ca117d0789c52f6-1080x1018.png" alt="Una interfaz web titulada “Editar política de reescritura” muestra campos para ID de política, título, descripción, selección de cohorte, opciones de consulta de regla, tipo de regla, ajustes de filtro y más, con un enfoque en la cohorte que contiene “vegano” y uno en el valor “vegano”." /><h3>Cómo funciona la activación de cohortes</h3><p>Cada documento de política tiene un campo <code>cohorts</code>. Las políticas universales que se aplican a todos los compradores independientemente de la cohorte pueden dejar este campo en blanco, e internamente se les asignará un valor de <code>"_all"</code> por el plano de control. Las políticas específicas de cohorte almacenan los nombres de sus cohortes objetivo, como <code>["vegan", "kosher", “sweet_tooth”]</code>.</p><p>Cuando una solicitud de búsqueda incluye un perfil de usuario, el plano de control construye un filtro <code>terms</code> simple para la consulta del percolador:</p>{ "terms": { "cohorts": ["_all", "vegan", "health_conscious"] } }<p>Este filtro único incluye todas las políticas universales, además de las políticas específicas de la cohorte del usuario. El <code>_all</code> centinela hace que este sea un filtro de inclusión limpio: no se necesitan búsquedas<code>must_not</code> o <code>exists</code> para manejar el caso en el que una política no tiene restricción de cohorte.</p><p>A continuación, el percolador evalúa las coincidencias de políticas como de costumbre. La única diferencia es que el conjunto de políticas candidatas se redujo a aquellas relevantes para las cohortes de este comprador. Todo el flujo descendente (transformaciones en cascada, resolución de conflictos por campo, seguimiento de frases consumidas) funciona de manera idéntica al flujo no personalizado descrito en las partes 3 y 4.</p><h3>Resultados de usuarios no veganos (estándar) al buscar “chocolate”</h3><p>Cuando un usuario no vegano realiza una búsqueda de chocolate, no se aplica ningún aumento de cohorte vegano a sus resultados. A menudo veía chocolates no veganos entre los resultados más populares, como por ejemplo:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc5244b19c2162f5b/6a17e95d3e03d727f74f2cb6/5bade79944ef294e2cb835cfd6e3231392e8fbd0-1159x1104.png" alt="Una página web muestra los resultados de búsqueda para “chocolate”, con filtros de categoría y marca a la izquierda y tres listados de productos de chocolate con descripciones, precios y especificaciones." /><h3>Resultados de la política de cohorte vegana al buscar “chocolate”</h3><p>Cuando un comprador de cohorte vegana realiza una búsqueda de “chocolate”, esta política se incluye en el conjunto de candidatos del percolador. Coincide, y el plano de control aplica un impulso suave a los chocolates certificados como veganos. El aumento es multiplicativo: los chocolates veganos tienen un rango más alto, pero los chocolates no veganos no están completamente excluidos porque el filtro anterior se define como un <em>impulso suave</em>, que describimos en detalle en la parte 3 de esta serie.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf73ce626bcd3d66d/6a17e95f2f4a5c5341fa8934/fc6f7ec6a9de30f3a6d8f32bb9ee7ec457dea458-1138x1255.png" alt="Una página web muestra resultados de búsqueda para “chocolate”, con filtros de categoría y marca a la izquierda y tres listados de productos de chocolate con descripciones, precios y especificaciones, con un enfoque en las etiquetas veganas circuladas." /><p>Sin embargo, si el comprador busca explícitamente “chocolate con leche Hershey”, la preferencia vegana sigue siendo aplicable, pero puede verse superada por la mayor relevancia textual de los productos de chocolate con leche Hershey.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e7487727387e524/6a17e9617b54f965ab8b3922/f47bb8bfa58106f897c4c6c143494f4367355528-1136x1142.png" alt="Una página web muestra resultados de búsqueda para “chocolate con leche Hershey”, con filtros de categoría y marca a la izquierda y tres listados de productos de chocolate Hershey’s, con descripciones detalladas, precios e información nutricional." /><p>Un comprador fuera de la cohorte vegana que busca la misma consulta nunca ve la política de la “cohorte vegana”; no está en su conjunto de candidatos. La capa de gobernanza es idéntica; solo el conjunto de políticas activas difiere.</p><h3>Cohortes con historial de compra</h3><p>Un comprador vegano con un historial de compra extenso obtiene la activación de políticas específicas para la cohorte vegana, así como impulsos en el historial de compra. Para compradores nuevos o anónimos, la membresía implícita en la cohorte por sí sola proporciona una personalización significativa sin requerir datos de comportamiento (por ejemplo, quizás un usuario anónimo solo buscó productos veganos, por lo que lo clasificamos como afiliado a la cohorte vegana). Un comprador que se autoidentifica como seguidor de las normas de halal durante la creación de la cuenta recibe inmediatamente resultados adaptados a halal en su primera búsqueda.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt89044f002807c2e4/6a17e962af47b64034cddfd3/81af35a533a567d99324860c8e69cf9752533c8f-545x301.jpg" alt="Un diagrama de flujo muestra cómo una búsqueda de “naranjas” se mueve a través de un servidor de aplicaciones, un plano de control, búsquedas de historial y políticas, y luego un índice de productos para devolver productos de naranja." /><h2>Cómo se componen las capas de personalización</h2><p>El orden de anidación de <code>function_score</code> capas importa. De lo más interno a lo más externo:</p><ol><li><p><strong>Búsqueda base:</strong> la palabra clave o coincidencia semántica con consultas nombradas (<code>fulltext_match</code>, <code>title_phrase_match</code>).</p></li><li><p><strong>Capa de política de gobernanza:</strong> filtros duros como cláusulas <code>bool.filter</code>, impulsos suaves como funciones <code>function_score</code> (Partes 3 y 4).</p></li><li><p><strong>Impulsos de señales de negocio:</strong> aumento de margen y popularidad (que exploraremos en la parte 7).</p></li><li><p><strong>Impulsos del historial de compra:</strong> La capa <code>function_score</code> más externa.</p></li></ol><p>Este orden garantiza que la gobernanza controle el conjunto de resultados (lo que aparece), que las señales de negocio ajusten la clasificación dentro de ese conjunto (lo que aparece primero desde la perspectiva del minorista) y que el historial de compras ajuste aún más la clasificación según el comportamiento individual (lo que aparece primero desde la perspectiva del comprador). Cada capa envuelve a la anterior de manera multiplicativa, por lo que los efectos se acumulan en lugar de entrar en conflicto.</p><h2>Qué significa esto a nivel operativo</h2><p>La personalización a través del plano de control gobernado preserva todas las propiedades operativas descritas en las Partes 1 y 2:</p><ul><li><p><strong>Cambios sin necesidad de despliegue.</strong> Las políticas de cohorte se crean, prueban y promueven a través de la IU de administración. Agregar una nueva cohorte dietética o ajustar un peso de refuerzo no requiere cambios en el código ni participación de ingeniería.</p></li><li><p><strong>Auditabilidad.</strong> Cada política de cohorte es un documento independiente y versionado. Cuando un comercializador pregunta: “¿Por qué los productos veganos aparecen mejor posicionados para este usuario?”, la respuesta es una política específica con una prioridad determinada, visible en el panel de depuración junto con todas las demás políticas que se activaron para esa consulta.</p></li><li><p><strong>Resolución de conflictos.</strong> Las políticas de cohorte participan en la misma resolución de conflictos por campo descrita en la Parte 3. Si el aumento de categoría de una política de cohorte entra en conflicto con la anulación de categoría de una política de campaña, el conflicto se resuelve de forma determinista mediante el mismo marco de trabajo de prioridades y estrategia, sin necesidad de una gestión especial.</p></li><li><p><strong>Mensurabilidad.</strong> Debido a que las políticas de cohorte son discretas y se pueden activar individualmente, su impacto en las tasas de conversión, clics y agregados al carrito puede medirse de forma independiente, al igual que cualquier otra política en el sistema.</p></li></ul><h2>Lo que se viene</h2><p>En la próxima publicación se explora otra dimensión del plano de control gestionado: cómo el margen y el impulso de la popularidad pueden ajustarse por consulta a través de políticas, lo que convierte la optimización económica en una decisión de gobernanza en lugar de una configuración estática.</p><p>Consulta la parte 7: optimización económica gobernada por consultas: margen por búsqueda y aumento de popularidad</p><h2>Pon en práctica la búsqueda gobernada de comercio electrónico</h2><p>Los patrones de personalización descritos en esta publicación (aumento del historial de compras individuales y activación de políticas consciente de la cohorte) fueron diseñados y desarrollados por Elastic Services Engineering como parte de nuestro acelerador de búsqueda de comercio electrónico repetible. Ambos mecanismos se integran con la arquitectura del plano de control gobernado descrita a lo largo de esta serie. Ponte en contacto con <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Únete a la discusión</h2><p>¿Tienes preguntas sobre la gestión de búsquedas, las estrategias de recuperación o la arquitectura de búsqueda en el comercio electrónico? Únete a la <a href="https://discuss.elastic.co/">conversación general de la comunidad de Elastic</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-personalized-search-governed-ecommerce</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-personalized-search-governed-ecommerce</guid>
    <category><![CDATA[Operaciones]]></category>
    <dc:creator><![CDATA[Alexander Marquardt,Honza Král,Taylor Roy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte3979255ddfc7f45/6a17e25ffaa913812f93c7cb/92c517a2e7b36122a18feee317a0215981b62b6b-720x420.jpg" length="0" type="image/jpeg"/>
    <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Percolador de Elasticsearch para la gobernanza de búsquedas en comercio electrónico: traducir búsquedas ambiguas en estrategias de recuperación controladas]]></title>
    <description><![CDATA[Aprende a usar el percolador de Elasticsearch para implementar la gobernanza de búsquedas. En este blog, describimos los patrones necesarios para crear un motor de políticas regulado en producción y establecer una estrategia de recuperación controlada.]]></description>
    <content:encoded><![CDATA[<p>Esta publicación es un análisis técnico detallado de la implementación en Elasticsearch de la arquitectura del plano de control descrita en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>, y muestra cómo crearla utilizando el percolador de Elasticsearch. Describe los patrones utilizados para implementar un motor de políticas determinista y regulado en producción.</p><h2><strong>De la arquitectura a la implementación</strong></h2><p>La <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a> describió la arquitectura del plano de control: coincidencia inversa como primitiva de búsqueda, documentos de políticas que separan la coincidencia de la acción y transformaciones en cascada que componen varias políticas en un solo plan de ejecución. Esta publicación pone en práctica la <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">búsqueda del percolador</a> de Elasticsearch, la función que permite la búsqueda de políticas.</p><p>El percolador se adapta naturalmente a la gobernanza porque invierte la dirección de búsqueda exactamente de la forma que necesita un plano de control. Esta publicación analiza la implementación paso a paso, comenzando con una explicación clara de la función del percolador y por qué es importante, pasando luego por el diseño del índice, el almacenamiento de políticas, la evaluación del tiempo de búsqueda y la composición de políticas múltiples.</p><h2><strong>Cómo funciona la búsqueda normal</strong></h2><p>En un sistema de comercio electrónico, puedes tener cientos de miles o millones de documentos de productos que contienen campos como <code>title</code>, <code>category</code>, y <code>price</code>. Cuando un usuario busca documentos coincidentes, le estás pidiendo a Elasticsearch que compare el texto de búsqueda del usuario con uno o más campos almacenados en estos documentos de producto. El analizador predeterminado de Elasticsearch, <a href="https://www.elastic.co/docs/reference/text-analysis/analysis-standard-analyzer">el analizador estándar</a>, convierte el texto a minúsculas y lo divide en tokens. Una búsqueda de “naranjas” coincide con “Naranjas” debido a las minúsculas. Con un analizador sensible al idioma que incluye derivación, también coincide con “naranja” porque ambas formas se reducen a la misma raíz. Por ejemplo, la siguiente <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-query">consulta de coincidencia</a> devuelve documentos que tienen “naranja” o “naranjas” en su campo <code>“title”</code>.</p>POST products/_search
{
  "query": {
    "match": {
      "title": "oranges"
    }
  }
}<p>Entonces, para la búsqueda anterior, Elasticsearch devuelve los documentos del producto cuyo campo <code>title</code> coincide con “naranjas”, que podrían incluir resultados como “Mermelada de naranja”, “Jugo de naranja”, “Naranjas jugosas”, “Mermelada de naranja”, etc. El punto clave a recordar es que Elasticsearch se usa comúnmente para comparar un texto de búsqueda con documentos y para devolver los documentos que coinciden con el texto de búsqueda.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt806e1c8c115bc9b6/6a170dba67045b634645c266/ba758f25616f2106d245ce0d47926c174766e028-642x318.png" alt="Un diagrama que compara una cadena de búsqueda entrante con títulos de productos almacenados y que muestra coincidencias para tres títulos que contienen “naranja” y ninguna coincidencia para dos títulos que no lo contienen." /><h2><strong>El problema de la gobernanza: encontrar políticas relevantes antes de buscar productos</strong></h2><p>Como se ha explicado en las <a href="https://www.elastic.co/search-labs/blog/series/governed-search-patterns">Partes 1 a 3</a>, un sistema de búsqueda gestionado no envía el texto de búsqueda del usuario directamente al catálogo de productos. Primero, comprueba si alguna política se aplica a ese texto de búsqueda.</p><p>Un vendedor decidió que cuando alguien busca exactamente "naranjas", los resultados deben restringirse a la categoría Naranjas y eliminar el jugo de naranja, la mermelada de naranja y el refresco de naranja. Esa decisión empresarial se almacena como una política. Cuando un usuario escriba "naranjas", el plano de control necesita encontrar esa política, leer sus instrucciones y modificar la búsqueda en el catálogo de productos en consecuencia. Para ello, el plano de control tiene que determinar qué políticas almacenadas son relevantes para esta cadena de búsqueda.</p><p>Un despliegue empresarial podría tener cientos o miles de políticas de este tipo. Comprobarlas una por una con lógica condicional (si/entonces) es el antipatrón de la capa de aplicación descrito en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Parte 2</a>. Lo que necesitamos es una forma de almacenar todas esas políticas en un índice y encontrar instantáneamente las que coincidan con un texto de búsqueda determinado. Aquí es donde entra en juego el percolador.</p><h2><strong>Cambiando la dirección: el percolador</strong></h2><p>Como mencionamos anteriormente, en una búsqueda normal, Elasticsearch se usa comúnmente para comparar un texto de búsqueda con documentos y devolver los documentos que contienen ese texto de búsqueda.</p><p>El percolador hace justo lo contrario. Con un percolador, tienes un índice donde cada documento almacena un patrón de búsqueda, y luego se comprueba un texto de búsqueda entrante contra estas búsquedas almacenadas para determinar cuál de estos patrones de búsqueda almacenados se activó.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1e7e2966bf46474d/6a170dbba929cf500aae0a57/1e6348531d1c0be57b385f51d248488cf58489ff-642x279.png" alt="Un diagrama que muestra varios patrones de consulta almacenados probados independientemente contra un texto de búsqueda entrante, con “naranjas” produciendo una coincidencia y todos los demás patrones no devolviendo ninguna coincidencia." /><p>En materia de gobernanza, los "patrones de búsqueda almacenados" son políticas. Cada política contiene un patrón que describe el tipo de texto de búsqueda con el que debe coincidir. Por ejemplo, ¿el texto de búsqueda coincide exactamente con “naranjas” o el texto de búsqueda contiene “aceite de oliva”? La cadena entrante es el texto de búsqueda del usuario, que llega en el momento de la búsqueda y debe comprobarse con todos los patrones de políticas almacenados. Esto se cubre en un <a href="https://youtu.be/Ap5K2Y00Xjc?t=246">video relacionado con PRISM a las 4:09</a>.</p><h2>Paso a paso: cómo una búsqueda de "naranjas" encuentra su política</h2><h3>La política</h3><p>Un vendedor ha creado una política que produce una coincidencia si un usuario busca exactamente "naranjas" sin ninguna otra palabra. Una vez que el percolador genera una coincidencia, el resto del documento incluye las reglas que el plano de control usará para crear la búsqueda del producto; en este ejemplo, una de las reglas es restringir (filtrar) los resultados a la categoría Frutas.</p>{
  "percolator": {
    "match_phrase": { "query": "START oranges END" }
  },
  "rule_type": "filter",
  "rule_args": {
    "filters": [
      {
        "field": "categories",
        "values": ["Fruits"],
        "mode": "hard_filter",
        "on_conflict": "soft_boost",
        "on_conflict_boost_weight": 1.0
      }
    ]
  },
  "priority": 0,
  "enabled": true
}<p>El campo <code>percolator</code> contiene el patrón que define cuándo debe ejecutarse esta política. En este caso, coincide con la expresión <code>"START oranges END"</code>. Los campos <code>rule_type</code> y <code>rule_args</code> definen lo que debe hacer la política cuando se activa. Los tokens <code>START</code> y <code>END</code> son marcadores de límites, que explicaremos en breve.</p><p>Puedes ver cómo se crea una política en la UI de PRISM Studio en el <a href="https://youtu.be/Ap5K2Y00Xjc?t=172">minuto 2:52 del video relacionado de PRISM</a>.</p><h3>El usuario busca</h3><p>Un comprador escribe "naranjas" en la barra de búsqueda.</p><h3>El plano de control verifica las políticas de coincidencia</h3><p>Antes de buscar en el catálogo de productos, el plano de control intercepta la cadena de búsqueda del usuario, la contiene entre marcadores de límite y la envía al percolador:</p>POST policies/_search
{
  "query": {
    "percolate": {
      "field": "percolator",
      "document": {
        "query": "START oranges END"
      }
    }
  }
}<p>El texto <code>"START oranges END"</code> se comprueba con todos los patrones de políticas almacenados. Internamente, Elasticsearch ejecuta los patrones de políticas almacenados relacionados con este texto y devuelve los que coinciden. Ese es el percolador. La cadena de búsqueda del usuario se comprobó según todos los patrones de políticas almacenados, y se devolvieron los que coincidían. No se permiten cadenas si/entonces. Sin evaluación secuencial. El índice maneja la coincidencia.</p><h3>El plano de control aplica la política</h3><p>El plano de control lee las acciones de las políticas coincidentes. La política anterior indica al plano de control que limite los resultados a la categoría Frutas. El plano de control crea la búsqueda final de Elasticsearch sobre el catálogo de productos de la siguiente manera:</p>POST products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "oranges" } }
      ],
      "filter": [
        { "terms": { "categories": ["Fruits"] } }
      ]
    }
  }
}<p>El usuario buscó "naranjas". El catálogo de productos recibe una búsqueda para "naranjas" restringida a la categoría Frutas. Debido a esta restricción, se excluyen el jugo de naranja, la mermelada de naranja y el refresco de naranja.</p><h3>¿Por qué la "mermelada de naranja" no activa la política de naranjas?</h3><p>Supongamos que otro usuario busca "mermelada de naranja". El plano de control envuelve el texto y se filtra: <code>"START orange marmalade END"</code>. El patrón de la política de naranjas es <code>match_phrase: "START oranges END"</code>. La política de naranjas no coincide y, por lo tanto, la política no se aplica, y los resultados no están limitados a la categoría Frutas.</p><p>Este es el propósito de los marcadores de límite <code>START</code> y <code>END</code>. Sin ellos, una política que coincida con la palabra "naranjas" podría activarse accidentalmente en una búsqueda como "mermelada de naranja". Al envolver el texto de búsqueda del usuario con <code>START</code> y <code>END</code> e incluir esos marcadores en el patrón de la política, nos aseguramos de que la política solo se activa cuando “naranjas” sea el texto de búsqueda completo, sin otras palabras. Esto coincide con la intención tanto de los compradores como de los comerciantes.</p><h2>Una segunda política: "aceite de oliva" en el campo derivado.</h2><p>No todas las políticas necesitan una coincidencia exacta de texto. La política de “aceite de oliva” coincide con un campo derivado, por lo que se aplica independientemente de variaciones menores en la forma de las palabras:</p>{
  "percolator": {
    "bool": {
      "should": [
        { "match_phrase": { "query.stemmed": "START olive oil END" } }
      ]
    }
  },
  "rule_type": "filter",
  "rule_args": {
    "filters": [
      {
        "field": "categories",
        "values": ["Olive oils"],
        "mode": "hard_filter",
        "on_conflict": "soft_boost",
        "on_conflict_boost_weight": 1.0
      }
    ]
  },
  "priority": 300,
  "enabled": true
}<p>El patrón de esta política coincide con <code>query.stemmed</code> en lugar de <code>query</code>. Cuando llega la cadena de búsqueda del usuario, se almacena tanto en un campo <code>query</code> (el texto exacto) como en un campo <code>query.stemmed</code> (analizado con un analizador de derivación que reduce las palabras a sus derivaciones, por lo que "aceitunas" y "aceituna" se reducen a la misma derivación, al igual que "aceites" y "aceite"). El patrón de la política se comprueba con la versión derivada del texto, por lo que se activa independientemente de las variaciones menores en la forma de la palabra.</p><p>Los marcadores de límites <code>START</code> y <code>END</code> también funcionan en el campo derivado, lo que garantiza que esta política solo se activa cuando "aceite de oliva" es el texto de búsqueda completo, no cuando aparece como parte de un texto más largo.</p><p>El resto de esta publicación cubre los detalles de implementación que hacen que esto esté listo para producción: la asignación de índices que admite ambos modos de coincidencia, cómo los resaltados impulsan la eliminación de frases y el seguimiento de las frases procesadas, y cómo múltiples políticas conflictivas se combinan en un único plan de ejecución.</p><h2><strong>El mapping del índice de políticas</strong></h2><p>El índice de políticas necesita un campo percolador para almacenar patrones de búsqueda y un campo de texto que refleje la estructura de la cadena de búsqueda entrante con la que el percolador coincidirá. El mapping a continuación se simplifica para mayor claridad. Un despliegue en producción es más complejo, ya que utiliza analizadores personalizados para manejar marcadores de límite, la coincidencia de patrones variables (por ejemplo, reconocer que "menos de $4" contiene un valor de moneda) y otros tipos de análisis.</p>PUT policies
{
  "mappings": {
    "properties": {
      "percolator": {
        "type": "percolator"
      },
      "query": {
        "type": "text",
        "fields": {
          "stemmed": {
            "type": "text",
            "analyzer": "stemming"
          }
        }
      },
      "rule_type": { "type": "keyword" },
      "rule_args": { "type": "object", "enabled": false },
      "priority": { "type": "integer" },
      "enabled": { "type": "boolean" }
    }
  }
}<p>El índice se llama <code>policies</code> porque cada documento representa una política regida completa como se define en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Parte 2</a>. Esto incluye criterios de coincidencia, acción, prioridad y metadato. Los campos <code>rule_type</code> y <code>rule_args</code> contienen el componente de acción de la política, que incluyen las instrucciones que utilizará el plano de control para crear la búsqueda para su ejecución en el catálogo de productos.</p><p>El campo <code>query</code> es el texto con el que coincide el percolador. Tiene dos variantes: una versión exacta y una versión derivada. Cuando llega el texto de búsqueda del usuario, se coloca en este campo del índice temporal en memoria. Las políticas que coinciden en <code>query</code> ven el texto exacto; las políticas que coinciden en <code>query.stemmed</code> ven la versión derivada.</p><h2><strong>Filtrar con resaltados, análisis y clasificación</strong></h2><p>Los ejemplos simples anteriores mostraron solicitudes mínimas de percolación. En la práctica, el plano de control añade resaltado, filtra políticas deshabilitadas y clasifica por prioridad:</p>POST policies/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "percolate": {
            "field": "percolator",
            "document": {
              "query": "START olive oil END"
            }
          }
        },
        {
          "term": { "enabled": true }
        }
      ]
    }
  },
  "highlight": {
    "fields": {
      "query": {
        "matched_fields": ["query.stemmed"]
      }
    }
  },
  "sort": [
    { "priority": { "order": "desc" } }
  ]
}<p>La configuración de resaltado usa <code>"query"</code> como clave de campo con <code>"query.stemmed"</code> en <code>matched_fields</code>. Esto le indica al <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/highlighting">resaltador</a> unificado de Elasticsearch que devuelva resaltados en el campo original <code>query</code>, pero que también considere las coincidencias del subcampo <code>query.stemmed</code> al determinar qué tokens resaltar. Esto es lo que permite que una política que coincide en el campo derivado siga produciendo resaltados precisos en el texto original, que el plano de control necesita para la eliminación de frases y el seguimiento de frases procesadas.</p><p>El filtro <code>enabled: true</code> garantiza que se omitan las políticas deshabilitadas. La <code>sort</code> como prioridad asegura que las políticas de mayor prioridad se devuelvan primero, para que el plano de control pueda procesarlas en el orden correcto para las transformaciones en cascada. El campo <code>highlight</code> es la adición más importante; nos indica exactamente qué palabras en el texto de búsqueda del usuario activaron cada coincidencia.</p><p>La respuesta a una búsqueda de "aceite de oliva" podría ser la siguiente:</p>{
  "hits": {
    "hits": [
      {
        "_id": "en_2c3021c8",
        "_source": {
          "rule_type": "filter",
          "rule_args": {
            "filters": [
              {
                "field": "categories",
                "values": ["Olive oils"],
                "mode": "hard_filter",
                "on_conflict": "soft_boost",
                "on_conflict_boost_weight": 1.0
              }
            ]
          },
          "priority": 300
        },
        "highlight": {
          "query": ["&lt;em&gt;START olive oil END&lt;/em&gt;"]
        }
      }
    ]
  }
}<h2><strong>Por qué los resaltados son importantes</strong></h2><p>Observen el punto destacado en la respuesta: <code>"&lt;em&gt;START olive oil END&lt;/em&gt;"</code>. Elasticsearch nos dice exactamente qué palabras en el texto de búsqueda del usuario hicieron que la política coincidiera. Esto no es solo superficial. El metadato destacado impulsa dos comportamientos posteriores críticos:</p><p><strong>Eliminación de frases.</strong> Algunas políticas necesitan eliminar el texto coincidente de la cadena de búsqueda antes de crear la búsqueda del catálogo de productos. Por ejemplo, una política que coincide con "barato" elimina esa palabra y la convierte en un filtro de precio en su lugar. El resaltado identifica exactamente con qué tramo del texto de búsqueda coincidía la política, para que el sistema sepa qué eliminar.</p><p><strong>Seguimiento de frases procesadas.</strong> Como se describe en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>, cuando varias políticas coinciden con el mismo texto de búsqueda, una política de mayor prioridad podría eliminar palabras con las que también coincidía una política de menor prioridad. Al comparar el resaltado de cada política con el texto de búsqueda actual (en evolución), el sistema puede detectar que se ha procesado una frase y omitir la política de menor prioridad. Esto evita el doble procesamiento y asegura un comportamiento determinista.</p><p>Puedes obtener más información sobre cómo funciona el resaltado en <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/how-es-highlighters-work-internally">este artículo</a>.</p><h2><strong>De la percolación al plan de ejecución</strong></h2><p>El percolador devuelve un conjunto de políticas coincidentes. Pero tal como se describió en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>, la búsqueda es solo la mitad de la historia. La otra mitad consiste en integrar esas coincidencias en un plan de ejecución coherente. Así es como se ve para una búsqueda concreta.</p><h3><strong>Ejemplo trabajado: "chocolate barato" durante una campaña de Navidad</strong></h3><p>Imaginemos que el sistema tiene dos políticas activas: la política de "Chocolate barato" (prioridad 210) y la política de "Chocolates navideños" (prioridad 300), ambas descritas en detalle en la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>.</p><p><strong>Paso 1: Filtra.</strong> El usuario busca "chocolate barato". El plano de control envuelve el texto de búsqueda como <code>"START cheap chocolate END"</code> y lo envía al percolador. Dos políticas coinciden: El patrón de la política de "Chocolate barato" coincide con la frase "chocolate barato"; y el patrón de la política de "Chocolates navideños" coincide con "chocolate" a través del campo derivado.</p><p><strong>Paso 2: ordena por prioridad.</strong> El percolador devuelve ambas políticas, ordenadas por prioridad en orden descendente. La política de “chocolates de Navidad” (300) se procesa primero, seguida de la política de “chocolate barato” (210).</p><p><strong>Paso 3: aplica la transformación en cascada.</strong> Este es el modelo <code>initial state → [Policy A] → state' → [Policy B] → state'' → execution plan</code> de la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a>.</p><p>La política de “chocolates de Navidad” (prioridad 300) se aplica primero:</p><ul><li><p>Agrega un filtro de categoría estricto: "comidas y bebidas de Navidad", "dulces de Navidad".</p></li><li><p>Agrega un filtro de precio: menos de $7.</p></li><li><p>Añade un impulso suave de categoría: "calendarios de Adviento" (3x).</p></li></ul><p>La política de “chocolate barato” (prioridad 210) se aplica a continuación contra el estado modificado:</p><ul><li><p>Se intenta agregar un filtro de categoría estricto: "Chocolates", "Chocolates con leche"; pero la política navideña ya estableció este campo con <code>on_conflict: override</code>, por lo que se eliminan las categorías de chocolate barato.</p></li><li><p>Se intenta agregar un filtro de precio: $2, la política de Navidad estableció <code>on_conflict: restrict</code> para el precio, y $2 es más restrictivo que $7, por lo que $2 gana.</p></li><li><p>Elimina "barato" del texto de búsqueda.</p></li></ul><p><strong>Paso 4: crea la búsqueda en Elasticsearch.</strong> El plano de control organiza el plan de ejecución en una sola búsqueda de Elasticsearch sobre el catálogo de productos:</p>POST products/_search
{
  "query": {
    "function_score": {
      "query": {
        "bool": {
          "must": [
            { "match": { "title": "chocolate" } }
          ],
          "filter": [
            { "terms": { "categories": ["Christmas foods and drinks", "Christmas sweets"] } },
            { "range": { "price": { "lt": 2 } } }
          ]
        }
      },
      "functions": [
        {
          "weight": 1
        },
        {
          "filter": { "terms": { "categories": ["Advent calendars"] } },
          "weight": 3
        }
      ],
      "score_mode": "sum",
      "boost_mode": "multiply"
    }
  }
}<p>El texto de búsqueda original era "chocolate barato". La búsqueda que llega al catálogo de productos es un plan de recuperación regulado y consciente de la intención: la palabra "barato" ha sido procesada y convertida en una restricción de precio, los resultados están restringidos a categorías estacionales de Navidad, los productos de calendario de Adviento reciben un impulso en el ranking y el techo de precio refleja el valor más restrictivo de la política de menor prioridad. Cada transformación es determinista, rastreable y explicable.</p><p>Para una visión general de cómo estos multiplicadores interactúan con el puntaje base de BM25, ver <a href="https://youtu.be/Ap5K2Y00Xjc?t=525">el punto 8:45 en el video relacionado de PRISM</a>, donde hablamos brevemente de los aumentos multiplicativos.</p><h2><strong>¿Por qué esto funciona a escala?</strong></h2><p>El percolador es eficiente para este caso de uso debido a la asimetría: un sistema de comercio electrónico empresarial puede tener millones de productos, pero solo cientos o miles de políticas de gobernanza. El percolador está comprobando un texto de búsqueda entrante contra ese conjunto de patrones de políticas almacenados, no escaneando el catálogo completo de productos. El costo es proporcional a la cantidad de políticas y Elasticsearch aplica optimizaciones internas (indexación de términos a partir de patrones de búsqueda almacenados, con evaluación de cortocircuito de la lógica booleana) para mantener la coincidencia rápida.</p><p>Agregar una nueva política es simplemente indexar un nuevo documento. Deshabilitar una es una actualización de campo. Sin cambios de código, sin despliegues, sin reinicios.</p><h2><strong>De búsqueda a recuperación regulada</strong></h2><p>El percolador ofrece la primitiva de retrocompatibilidad rápida que hace que la arquitectura del plano de control de la <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Parte 3</a> sea práctica a gran escala. Las políticas son datos que se almacenan e indexan, y se comparan eficientemente con los textos de búsqueda entrantes. El plano de control compone políticas coincidentes en un plan de ejecución regulado a través de la transformación en cascada y la resolución de conflictos por campo descrita en la Parte 3. Y el motor de recuperación ejecuta el plan de ejecución definido sobre el catálogo de productos.</p><p>El resultado es un sistema en el que un vendedor puede crear una nueva política sin modificar el código de la aplicación, probarla con búsqueda representativas, implementarla en producción y observar el efecto de inmediato. El percolador agiliza la búsqueda de políticas; el plano de control hace que la composición de políticas sea determinista; y el flujo de trabajo regulado asegura la seguridad de todo el proceso.</p><h2><strong>Lo que se viene</strong></h2><p>La próxima publicación en esta serie extiende el plano de control gestionado a un nuevo territorio. Introduce una <strong>arquitectura de búsqueda de varios niveles</strong>, que explica cómo organizar una recuperación estricta, flexible y semántica mientras se mantiene la paginación y las facetas estables.</p><h2><strong>Pon en práctica la búsqueda gobernada de comercio electrónico</strong></h2><p>El plano de control basado en percolador descrito en esta publicación, desde los mapeos de índices y marcadores de límite hasta el seguimiento de frases basado en resaltados y la composición de políticas en cascada, fue desarrollado por Elastic Services Engineering como parte de nuestros aceleradores de búsqueda de comercio electrónico repetibles. Cada ejemplo de búsqueda y estructura de políticas que aparece aquí proviene de un sistema funcional validado en relación con catálogos de productos a escala empresarial.</p><p>Si quieres implementar un plano de control regulado y basado en políticas en Elasticsearch, Elastic Services puede acercarte a tu objetivo más rápido. Ponte en contacto con <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Únete a la discusión</h2><p>¿Tienes preguntas sobre la gestión de búsquedas, las estrategias de recuperación o la arquitectura de búsqueda en el comercio electrónico? Únete a la <a href="https://discuss.elastic.co/">conversación general de la comunidad de Elastic</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance</guid>
    <category><![CDATA[Operaciones]]></category>
    <dc:creator><![CDATA[Alexander Marquardt,Honza Král,Taylor Roy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt19fcc31ad093ad30/6a170dbd7d8d67301070e799/5e485cdd52d78419ff0ac30a4192b953f6d70c61-1280x720.png" length="0" type="image/png"/>
    <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Creación de un plano de control para gestionar las búsquedas en el comercio electrónico]]></title>
    <description><![CDATA[Cómo construir un plano de control gobernado para el comercio electrónico que integre políticas de búsqueda conflictivas en un solo plan de ejecución (sin cambios de código).]]></description>
    <content:encoded><![CDATA[<p>La <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">parte 1</a> y la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">parte 2</a> de esta serie establecieron por qué la búsqueda de comercio electrónico necesita una <em>capa de gobernanza</em>, una capa de decisión entre la consulta del usuario y el motor de recuperación que clasifica la intención, impone restricciones y enruta a la estrategia de recuperación correcta (p. ej., BM25, semántica, híbrida). Esta publicación muestra cómo construir esa capa utilizando una primitiva arquitectónica simple, en la cual las políticas de interpretación de consultas se almacenan como documentos y se recuperan en tiempo de consulta mediante coincidencia inversa rápida. Debido a que las nuevas políticas de recuperación (p. ej., “reforzar la marca X” o “mostrar solo la categoría Y”) no requieren cambios en el código, el resultado es una capa de enrutamiento que se mantiene estable mientras las políticas evolucionan y que mantiene los motores de recuperación seguros en entornos de alto riesgo. Si quieres ver el resultado final de esta arquitectura antes de seguir leyendo, mira este video: <a href="https://www.youtube.com/watch?v=e1GuL9CYWAk">Mejorar la relevancia de búsqueda en segundos: presentamos PRISM</a>.</p><h2>Por qué interpretar consultas suele ser complicado</h2><p>Almacenar políticas como código (bloques if/else en la capa de aplicación) produce decenas de miles de líneas de lógica frágil que carece de cualquier indexación para una recuperación eficiente de políticas en tiempo de consulta. La iteración es lenta (un simple cambio en el comportamiento de una consulta puede requerir un ciclo de despliegue de seis semanas), la responsabilidad no está clara (¿por qué cambiaron los resultados?) y los usuarios de negocio no pueden modificar el comportamiento de búsqueda sin la intervención del equipo de ingeniería. Esto se muestra en el lado izquierdo de la siguiente imagen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb84f89f4d9029df7/6a170f806234e077cddb1ab6/4e2cd5244ef8b9a05af6337a4825252f321a9a43-1377x768.png" alt="Imagen con dos encabezados, “Políticas como código” a la izquierda y “Políticas como datos” a la derecha. En el lado izquierdo se muestran bloques de código condicional que definen reglas para el manejo de consultas, junto con notas sobre el despliegue, los ciclos de cambio y la evaluación secuencial. En el lado derecho se muestran los objetos de política JSON con títulos, términos de coincidencia, acciones, filtros y prioridades, junto con notas sobre el almacenamiento en un índice de Elasticsearch, el comportamiento de actualización y la coincidencia indexada." /><p>En la parte derecha de la imagen de arriba se muestra cómo almacenar políticas como datos en un índice de Elasticsearch. Este enfoque resuelve todos los problemas asociados con la lógica de resolución de consultas codificada de forma rígida. Sin embargo, para que esto funcione, necesitas una manera de determinar rápidamente qué políticas coinciden con la consulta del usuario y cómo se deben resolver los conflictos. Aquí es donde entra en juego el plano de control gobernado.</p><h2>El patrón del plano de control</h2><p>Entre la consulta original del usuario y la recuperación de Elasticsearch se interpone un plano de control gestionado. Recibe texto del usuario como entrada, y su salida es un plan de ejecución que incluye filtros, refuerzos y decisiones de enrutamiento de recuperación.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0585c90830d63d02/6a170f82964cea7a5908bc8b/5562da5de521f3c83ed55a13e9be87ca7fa70109-546x489.png" alt="Diagrama que ilustra dos flujos de búsqueda a través de un plano de control gobernado: uno en el que una consulta de texto para “naranjas” se reescribe con una restricción de categoría antes de la búsqueda del producto, y otro donde una consulta semántica para “regalo para el abuelo” se reescribe y se enruta para recuperar productos coincidentes de un catálogo de productos." /><p>Un pipeline del plano de control consiste en:</p><ol><li><p><strong>Consulta del usuario: </strong>un usuario ingresa un texto de lo que está buscando, como “naranjas” o “regalo para el abuelo”.</p></li><li><p><strong>Búsqueda de políticas: </strong>hacer coincidir la consulta del usuario con el índice de políticas.</p></li><li><p><strong>Arrojar políticas coincidentes:</strong> las políticas que coinciden con la consulta del usuario se recuperan del índice de políticas.</p></li><li><p><strong>Aplicación de políticas: </strong>la capa de control analiza las políticas arrojadas y combina las políticas coincidentes en un único plan de ejecución coherente que incluye filtros, refuerzos, anulaciones y barreras de seguridad, y aplica el método de recuperación adecuado (por ejemplo, recuperación léxica, recuperación semántica o híbrida).</p></li><li><p><strong>Ejecutar:</strong> la consulta <em>consciente de la intención</em> modificada de Elasticsearch se pasa a la aplicación para ejecutarse contra un índice de catálogo de productos.</p></li><li><p><strong>Explicar (opcional):</strong> además de crear una consulta que proporciona resultados alineados con el negocio y la intención, el plano de control ofrece una carga útil opcional de explicabilidad para mostrar qué políticas se activaron y cómo se combinaron.</p></li></ol><p>Encontrar qué políticas deben aplicarse para el texto de búsqueda de un usuario requiere una primitiva de coincidencia inversa rápida, que resolvemos con la <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">búsqueda percolator</a>. Después de recuperar las políticas relevantes, es necesario un marco de trabajo de juicio para combinar múltiples políticas emparejadas en un plan de ejecución unificado: prioridades, estrategias de conflicto, seguimiento de frases consumidas y transformaciones en cascada que aplican las políticas en secuencia en vez de forma independiente. Además, se debe seleccionar la tecnología de recuperación más adecuada (por ejemplo, <a href="https://www.elastic.co/elasticon/conf/2016/sf/improved-text-scoring-with-bm25">BM25</a> para “naranjas” frente a la <a href="https://www.elastic.co/docs/solutions/search/semantic-search">búsqueda semántica</a> de “regalo para el abuelo”).</p><h2>Consulta de políticas: verificación de la consulta antes de buscar productos</h2><p>Cuando un comprador escribe una consulta, un sistema de búsqueda con un plano de control regulado no envía esa consulta directamente para que se ejecute en el catálogo de productos. Primero, la consulta se compara con un conjunto de políticas almacenadas y se modifica para reflejar la intención de la consulta y las prioridades del negocio.</p><h3>Estructura de la política</h3><p>Cada póliza es un documento simple que define dos cosas:</p><ul><li><p><strong>Criterio de coincidencia:</strong> Qué texto de búsqueda debería activar esta política. Esto puede ser una frase exacta, una sola palabra, un patrón o una combinación.</p></li><li><p><strong>Acción:</strong> qué hacer cuando se activa la política. Esto podría consistir en aplicar un filtro de categoría, excluir productos, establecer un límite de precio o cambiar la estrategia de búsqueda.</p></li></ul><p>El sistema busca todas las políticas que coinciden, las integra en un plan de ejecución y solo entonces ejecuta la búsqueda de productos. Tomadas en conjunto, las políticas actúan como un asociado conocedor de la tienda que entiende lo que estás buscando y te guía hacia el pasillo correcto.</p><h3>El patrón de política</h3><p>Los primeros artículos de esta serie introdujeron ejemplos de políticas en acción: restringir "naranjas" a la categoría de productos, tratar "sin maní" como una exclusión y dirigir "regalo para el abuelo" a la recuperación semántica. El punto arquitectónico clave es que, en cada caso, la consulta se verifica con las políticas almacenadas antes de que comience la búsqueda del producto. Las políticas determinan qué restricciones aplicar, qué texto modificar y qué estrategia de recuperación utilizar. La consulta al catálogo de productos se realiza después de que se hayan aplicado las políticas y se haya creado una nueva consulta reescrita.</p><h3>Por qué es rápido</h3><p>Un sistema de comercio electrónico empresarial puede tener millones de productos, pero solo cientos o miles de políticas. El paso de búsqueda de políticas implica buscar en un índice pequeño y curado, no en el catálogo completo de productos, y por lo tanto es rápido. Y como las políticas se almacenan como datos en su propio índice, un comerciante que agregue una nueva política no tiene que tocar el código de la aplicación, y un ingeniero que optimice la búsqueda de productos no tiene que tocar el índice de políticas. Las dos preocupaciones evolucionan por su cuenta.</p><p>Los ejemplos anteriores describen qué sucede a nivel conceptual. Detrás de escena, la búsqueda de políticas se implementa usando el tipo de <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">consulta percolator</a> de Elasticsearch, que está diseñado específicamente para este tipo de patrón: hacer coincidir el texto entrante con un conjunto de consultas almacenadas. La <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">Parte 4</a> de esta serie proporciona una inmersión práctica y profunda en la implementación de percolator, incluyendo mapeos de índices, marcadores de límite y seguimiento de frases impulsado por resaltado. Ya que la Parte 4 cubre la totalidad del mecanismo de búsqueda, pasemos a lo que realmente contiene un documento de política y cómo el plano de control compone múltiples políticas en un solo plan de ejecución.</p><h2>Ejemplos de políticas</h2><p>Ahora que ya sabemos qué hacen las políticas en teoría, veamos qué contienen en realidad. Las dos políticas que aparecen a continuación se han diseñado para que entren en conflicto de forma intencionada, lo que servirá para demostrar el sistema de resolución de conflictos que se describe en las secciones siguientes.</p><h3>Chocolate barato</h3><p>La política que se muestra a continuación detecta si un usuario ha enviado una búsqueda que contiene la frase “chocolate barato”. Si es así, los resultados se restringen a las categorías de “chocolates” y “chocolates con leche”. Esta política también aplica un filtro de precio de $2. Además, observa que esta política tiene una prioridad de 210; retomaremos esto cuando veamos la resolución de conflictos con más detalle.</p><p>La configuración del modo de filtro y la estrategia de conflicto que se muestran aquí (hard_filter, soft_boost, restrict, override) se explican en detalle en la sección de resolución de conflictos a continuación.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltada4d46e2ab26208/6a170f836f7f04f91f914924/bbcd66b20fc3aa861b5880ca67daf8e809698717-1002x890.png" alt="Interfaz que muestra una configuración de regla con una frase de coincidencia para “chocolate barato”, filtros de categoría y precio, un campo de eliminación de frase y ajustes de prioridad." /><p>Cuando se activa la política anterior, una búsqueda de “chocolate barato” respeta el filtro de precio de $2 y restringe los resultados a las categorías de “chocolates” y “chocolates de leche”. A continuación se muestran los resultados de ejemplo:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt368bdfbb9a6e5a5e/6a170f8566c4f975a1f8c10f/3f373af9a985864315d7639440a416e45a882a1b-1133x1146.png" alt="Interfaz que muestra una configuración de regla con una frase de coincidencia para “chocolate barato”, filtros de categoría y precio, un campo de eliminación de frase y ajustes de prioridad." /><h3>Chocolate de Navidad</h3><p>La política que se muestra a continuación es un ejemplo de una política que uno podría imaginar aplicando en Navidad. Este ejemplo restringe los resultados a “comidas y bebidas navideñas” y “dulces navideños”, refuerza cualquier producto que también esté en la categoría “calendarios de Adviento” y aplica un filtro de precio de menos de $7 para enfocarse en artículos de temporada asequibles. Además, ten en cuenta que esta política tiene una prioridad de 300. Lo retomaremos cuando veamos la resolución de conflictos con más detalle.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta3428d211f2d8304/6a170f86839dfa0049dcffb3/8f1179342d0e05cf78266d142b046021a3694368-1007x941.png" alt="Captura de pantalla de una interfaz de consulta de reglas de Elasticsearch que muestra una consulta match_phrase para “chocolate”, reglas de filtro basadas en categorías y precio, opciones de manejo de conflictos y configuraciones de prioridad de reglas." /><p>Cuando la política anterior se activa sin ninguna política conflictiva, una búsqueda de “chocolate” respeta el filtro de precio de $7, y restringe los resultados a las categorías de “comida y bebidas navideñas” y “dulces navideños”, y refuerza cualquier producto etiquetado como “calendarios de Adviento”. A continuación se muestran los resultados de ejemplo:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e7f1fe91b2cadcd/6a170f8866c4f90b0af8c113/662b0e40cb3a9291c17816c33169e9ff5b68f98d-1129x1085.png" alt="Página de resultados de búsqueda que muestra una consulta para “chocolate” con filtros de categoría y marca a la izquierda y una lista de productos del calendario de Adviento de chocolate con imágenes, precios, categorías y descripciones a la derecha." /><h2>Combinación de políticas coincidentes</h2><p>La consulta de políticas que acabamos de describir es solo la mitad de la cuestión. La otra mitad es lo que sucede cuando varias políticas coinciden con la misma búsqueda.</p><p>En cualquier despliegue no trivial, una sola consulta activará de forma rutinaria varias políticas a la vez. "Chocolate barato" coincidirá con ambas políticas que ya demostramos. Cada política es correcta de forma aislada. La parte difícil consiste en combinarlas en un único plan de ejecución coherente, sin contradicciones, sin contar dos veces lo mismo y sin que una política anule en silencio el trabajo de otra.</p><p>Esto no es un problema de búsqueda; es un problema de juicio. El sistema debe decidir:</p><ul><li><p><strong>Orden de solicitud:</strong> si una política de negación elimina "sin maní" de la consulta, ¿la política de precios sigue viendo el texto original o el texto modificado?</p></li><li><p><strong>Filtrar conflictos:</strong> si dos políticas establecen diferentes límites de precio, ¿cuál gana? ¿El perdedor se elimina en silencio o se degrada poco a poco en un refuerzo leve?</p></li><li><p><strong>Propiedad de frase:</strong> si dos políticas coincidieron en la misma palabra y la primera ya la consumió, ¿debería activarse la segunda?</p></li></ul><p>Una implementación ingenua (aplicar todas las políticas coincidentes de forma independiente, combinar los resultados) falla apenas interactúan las políticas. La arquitectura necesita un modelo explícito de cómo se componen las políticas. Las siguientes dos secciones describen ese modelo: un marco de trabajo de prioridad y resolución de conflictos; y un modelo de transformación en cascada que hace que la interacción de políticas sea determinista.</p><p>La idea clave es que la aplicación de políticas no es un conjunto de operaciones independientes, sino una transformación en cascada. Cada política recibe el estado de reescritura producido por todas las políticas de mayor prioridad y lo transforma aún más:</p><p>estado inicial → [Política A] → estado' → [Política B] → estado'' →... → plan de ejecución</p><p>El estado lleva el texto de la consulta reescrito, los filtros acumulados, la intención actual y cualquier expansión de sinónimos. Una política de alta prioridad puede eliminar texto de la consulta, y cada política subsiguiente ve la consulta modificada, no la original. El contexto se acumula. El orden importa.</p><h2>Precedencia y resolución de conflictos: el determinismo importa</h2><p>Las estrategias específicas de conflicto son una elección de diseño. Cada organización puede resolver los conflictos de manera diferente, según sus necesidades empresariales. El siguiente enfoque ilustra el tipo de marco de trabajo que necesita un plano de control. Lo importante no son estas estrategias concretas, sino que el sistema cuente con estrategias explícitas y deterministas, en lugar de dejar que los conflictos se resuelvan mediante interacciones impredecibles.</p><h3>Orden de prioridad</h3><p>Las políticas se ordenan por prioridad (la más alta primero). Cuando varias políticas coinciden con la misma consulta, se aplican en orden de prioridad. Si dos políticas intentan establecer el mismo campo de filtro, la estrategia declarada por la política de mayor prioridad para ese campo tiene prioridad. Si hay varias políticas activadas que tienen la misma prioridad, entonces se da preferencia a la política con el ID más alto (como si se le hubiera asignado una prioridad más alta); esta elección asegura un comportamiento determinista cuando surgen conflictos.</p><h3>Resolución por campo, no por política</h3><p>Un principio fundamental de diseño: la resolución de conflictos opera por campo (por ejemplo, marca, categoría o descripción), no por política. Cuando dos políticas producen filtros que se superponen en campos específicos, solo esos campos específicos se ven afectados por la estrategia de resolución de conflictos, y la estrategia de resolución la define la política de coincidencia de mayor prioridad. Los campos no conflictivos de ambas políticas permanecen intactos.</p><p>Esto importa porque la alternativa de un enfoque por política obligaría al sistema a aceptar o rechazar una política completa cuando solo uno de sus campos entra en conflicto.</p><p>La resolución por campo conserva la mayor cantidad posible de información útil sobre restricciones.</p><h3>Tres configuraciones por campo del filtro</h3><p>Cada campo de filtro de una política tiene tres configuraciones independientes:</p><p><strong>Modo de filtro:</strong> cómo se aplica el filtro cuando no hay conflicto.</p><ul><li><p><code>hard_filter</code> (predeterminado): se aplica como una cláusula <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-bool-query#score-bool-filter">Elasticsearch </a><a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-bool-query#score-bool-filter"><code>bool.filter</code></a>. Esto es útil para excluir por completo productos no relacionados. Por ejemplo, restringir la búsqueda de "naranjas" a la categoría de productos elimina resultados como jugo de naranja y mermelada de naranja. Los documentos que no coinciden se excluyen por completo de los resultados.</p></li><li><p><code>soft_boost</code>: aplicado como un peso <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-function-score-query">de Elasticsearch </a><a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-function-score-query"><code>function_score</code></a> con un <code>boost_weight</code> configurable. Los documentos que coinciden obtienen un refuerzo en la clasificación, pero los documentos que no coinciden no se excluyen. Esto es útil, por ejemplo, para reforzar una marca sin dejar de lado a las demás.</p></li></ul><h3>Estrategia de conflicto</h3><p>Qué ocurre cuando una política de menor prioridad establece el mismo campo:</p><ul><li><p><code>override</code>: El valor de esta política de alta prioridad gana; el valor de menor prioridad se descarta por completo. Válido para todos los tipos de campos.</p></li><li><p><code>restrict</code>: Tomemos el valor numérico más restrictivo (por ejemplo, el techo inferior para el precio__max, the higher floor for price__min). Válido solo para campos numéricos de rango.</p></li><li><p><code>merge</code>: Combina ambos valores en una unión. Válido solo para campos no numéricos.</p></li><li><p><code>soft_boost</code>: Convierte el filtro en conflicto a un peso <code>function_score</code> con un <code>boost_weight</code> configurable en lugar de un filtro estricto. Para más detalles sobre el aumento de function_score, consulta <a href="https://www.elastic.co/search-labs/blog/bm25-ranking-multiplicative-boosting-elasticsearch">Cómo influir en el ranking de BM25 con aumento multiplicativo en Elasticsearch</a>. Esto solo es válido para campos no negativos.</p></li></ul><p><strong>Valor:</strong> el valor real del filtro (por ejemplo, una lista de categorías, un umbral de precio).</p><p><strong>Estrategias por tipo de campo: </strong>no todas las estrategias tienen sentido para todos los tipos de campo. Por ejemplo, una exclusión es inherentemente binaria, por lo que no se puede reforzar de forma leve. La siguiente tabla muestra qué estrategias están disponibles para cada tipo de campo:</p><p>Tipo de campo</p><p>Estrategias disponibles</p><p>Predeterminado</p><p>Campos de negación (__not, __match__not)</p><p>anular, fusionar</p><p>anular</p><p>Campos de rango numérico (__max, __mín, __gt, __lt)</p><p>restringir, anular, soft_boost</p><p>restringir</p><p>Todos los demás campos (palabra clave, texto)</p><p>soft_boost, anular, fusionar</p><p>soft_boost</p><p>Los campos de negación no se pueden reforzar de forma leve porque las exclusiones son binarias. Convertir "nunca mostrar alimentos enlatados" a "leve preferencia por alimentos no enlatados" cambia fundamentalmente la semántica; un producto de "alimentos enlatados" aún aparecería, solo clasificado ligeramente más abajo, lo que anula el propósito de la exclusión.</p><h2>Un ejemplo concreto: buscar "chocolate barato" durante una campaña de Navidad</h2><p>Suponga que un comerciante ha creado las dos políticas para el chocolate que demostramos previamente, una de menor prioridad para el chocolate barato y otra política relacionada con el chocolate de mayor prioridad que se habilitará durante Navidad. Si ambas de estas políticas están habilitadas, entonces cómo se combinan depende del modo de filtro y la estrategia de conflicto de la política de mayor precedencia. Si ambas de las políticas previamente discutidas están habilitadas, se combinarán de la siguiente manera:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf930b42611a6126c/6a170f8aacf088ae28be9c1b/0405e193522172bde283180df96ed3651178fafc-529x447.png" alt="Captura de pantalla que muestra un pipeline donde una consulta inicial “chocolate barato” se modifica mediante múltiples reglas, incluidos filtros de categoría y precio agregados, comportamiento de resolución de conflictos, prioridades de reglas y una consulta final transformada de “chocolate”." /><p>Esto muestra dos conflictos, uno en categorías y uno en precio. Vale la pena señalar que la consulta que se ejecutará después de esta transformación tiene las siguientes características:</p><ul><li><p>Solo se mostrarán productos de las categorías “Comidas y bebidas navideñas” y “Dulces navideños”.</p></li><li><p>Dentro de esas categorías, si los productos también están etiquetados como pertenecientes a la categoría “Calendarios de Adviento”, recibirán un impulso de 3x.</p></li><li><p>Se aplica un filtro de precio por $2, que proviene de la política de menor prioridad (porque la política de mayor prioridad especificada es “Restringir” en caso de conflicto).</p></li><li><p>La palabra “barato” se elimina, así que se arrojan solo los productos que coinciden con “chocolate”.</p></li></ul><p>Con ambas políticas habilitadas, “chocolate barato” devuelve resultados similares a la imagen que se muestra a continuación:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7e3c2ee36f963e8c/6a170f8ccdacbf5be17d2ac2/01bbab1c5bd3d0fd37e39c25973d60141f9796e9-1126x1123.png" alt="Página de resultados de búsqueda que muestra una consulta para “chocolate barato”, con filtros de categoría y marca a la izquierda y una lista de productos del calendario de Adviento de chocolate con imágenes, precios y detalles del producto a la derecha." /><h3>Relajación de restricciones</h3><p>Tal vez el minorista no quiere excluir productos en las categorías de “chocolates” y “chocolates de leche” durante Navidad. La configuración de la política de Navidad podría haber excedido los límites y eliminado inadvertidamente las categorías aplicadas por la política de "chocolate barato". Este es un ejemplo que muestra por qué podría ser más deseable combinar políticas de menor prioridad con políticas en conflicto de mayor prioridad. Por ejemplo, podríamos modificar la promoción de chocolates de Navidad para que, en lugar de "anular" en caso de conflicto, hagamos un refuerzo leve. El cambio a esa política sería el siguiente:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbb7393566aeab705/6a170f8db0367d5b6472bde2/45e88311014d67933ca8cf8381d8f91de090e2b4-1090x103.png" alt="UI que muestra una regla de política de búsqueda con el campo establecido en Categorías, operador establecido en Iguales, valores “Alimentos y bebidas navideñas” y “Dulces navideños”, manejo de conflictos configurado en Leve con prioridad 1 y modo de filtro configurado en Filtro duro." /><p>Después de esta modificación, la ejecución de la pipeline de transformación del reescritor de consultas para “chocolate barato” tiene el siguiente aspecto:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6b4453b35b5f8ef0/6a170f8fb339d5ba9b76a09a/396b360e48327421c2c38bcf4a039fb1a6d5a8e0-519x445.png" alt="Captura de pantalla de una pipeline de transformación que muestra cómo la consulta inicial “chocolate barato” se modifica mediante múltiples reglas, incluidos filtros de categoría, límites de precio, modos de refuerzo leve y filtro duro, resultados de manejo de conflictos, prioridades de reglas y una consulta final de “chocolate”." /><p>Con el refuerzo leve en caso de conflicto, los filtros conflictivos se convierten en refuerzos leves en vez de ser descartados. La consulta que se ejecutará en el catálogo de productos luego de esta transformación tiene las siguientes características:</p><ul><li><p>Debido a que “En conflicto” se especifica como “Refuerzo leve” en la política de mayor prioridad, los conflictos se convertirán en impulsos de la siguiente manera:</p><ul><li><p>Los productos de las categorías “comidas y bebidas de Navidad” y “dulces de Navidad” tendrán un refuerzo de 1 vez aplicado.</p></li><li><p>A los productos de las categorías “chocolates” y “chocolates con leche” se les aplicará un refuerzo de 3 veces.</p></li></ul></li><li><p>Como en el ejemplo anterior, si los productos también están etiquetados como en la categoría “calendarios de Adviento”, se reforzará tres veces.</p></li><li><p>Como en el ejemplo anterior, se aplica un filtro de precio de $2.</p></li><li><p>La palabra “barato” se elimina, así que se arrojan solo los productos que coinciden con “chocolate”.</p></li></ul><p>Con filtrado relajado, los resultados se ven así:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0288336675c509ef/6a170f917d8d6723bc70e808/7a68c54d878dadfe8b1821dd3860b7b60f9ce45f-1126x1123.png" alt="Página de resultados de búsqueda para la consulta “chocolate barato”, que muestra filtros de categoría y marca a la izquierda y una lista de productos a la derecha, con varios artículos de chocolate, precios, categorías y un total de 6895 resultados indicados en la parte superior." /><h3>Anulando precio desde una política de alta prioridad</h3><p>O tal vez el minorista quiere permitir que se muestren chocolates un poco más caros durante Navidad aumentando el precio máximo a $7. Para asegurarnos de que el precio máximo de la política de chocolates navideños no se invalide si alguien hace una "búsqueda de chocolates baratos", podemos establecer el modo de conflicto en el precio en "anular" en lugar de "restringir", de la siguiente manera:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltae1b40d312cf59e6/6a170f92cdacbfa1277d2ac6/c2621e6513281f545b84eb77362f2b93e1c46a1f-996x70.png" alt="UI que muestra una regla de política de búsqueda con el campo establecido en Precio, operador establecido en Menos que, valor establecido en 7, manejo de conflictos configurado en Anular y modo de filtro configurado en Filtro duro." /><p>Con esta anulación, la consulta para “chocolate barato” ignora el precio máximo que se define en la “política de chocolate barato” y solo aplica el precio especificado en la “política de chocolates de Navidad”, de la siguiente manera:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4a47aa71c925b4a3/6a170f94ab7f0863d3db9f6d/d50da7900beb3c08439e9fd79cbe2ddd98196441-511x389.png" alt="Captura de pantalla de un pipeline de transformación que detalla cómo la consulta inicial &quot;chocolate barato&quot; es procesada por dos reglas de filtrado, mostrando los filtros de categoría y precio agregados, los modos de filtrado estricto y de refuerzo leve, los resultados del manejo de conflictos, las prioridades de las reglas y la eliminación de un filtro de precio debido a un conflicto." /><p>Esto es similar al ejemplo anterior, con la diferencia de que el precio máximo se establece en el valor de $7 de la política de mayor prioridad porque esa política especificó “Anular” en caso de conflicto. Con el filtro de precios de Navidad como prioridad, los resultados se ven así:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2b9ac1a62437c967/6a170f96839dfa3f58dcffb9/635ee6353ba84727486e7e053764788fb26b6f44-1134x1079.png" alt="Página de resultados de búsqueda para la consulta &quot;chocolate barato&quot;, que muestra filtros de categoría y marca a la izquierda y una lista de productos de chocolate a la derecha, incluyendo varios calendarios de Adviento con imágenes, precios, categorías y un total de 10 000 resultados mostrados." /><p>Estas tres variantes (override, soft_boost y override on price) demuestran una propiedad clave del sistema: un comerciante puede cambiar cómo interactúan dos políticas modificando una configuración en un solo campo dentro de una sola política, sin necesidad de desplegar ningún código. La estrategia de conflicto es el interruptor que controla el comportamiento empresarial.</p><h2>Seguimiento de frases consumidas</h2><p>Hay un tipo de conflicto más sutil: dos políticas que coinciden en la misma frase. Si una política de mayor prioridad elimina "sin maní" de la consulta, una política de menor prioridad que también coincidió con "sin" no tiene nada sobre lo que actuar. El sistema detecta si la frase coincidente ya no está presente en la consulta reescrita y omite la política de menor prioridad.</p><p>Las políticas de intención están exentas del seguimiento de frases consumidas: establecen la estrategia de recuperación basada en la coincidencia de la consulta original, independientemente del texto que se haya eliminado por políticas de mayor prioridad.</p><p>El orden de prioridad, la resolución de conflictos por campo y el seguimiento de frases consumidas juntos otorgan al plano de control un modelo de composición determinista. Con esa base establecida, el sistema puede tomar una decisión de enrutamiento que sería arriesgada sin ella.</p><h2>La gobernanza hace que la estrategia de recuperación sea segura</h2><p>Una información importante sobre el enrutamiento al método de recuperación correcto (texto, semántico o híbrido) es que se ejecuta luego de la gobernanza. Si tus políticas ya han aplicado la categoría de "producto", entonces la recuperación semántica se vuelve mucho menos riesgosa porque el conjunto de candidatos está restringido. Una búsqueda semántica sobre 500 productos es una propuesta muy diferente a una búsqueda semántica sobre 500 000 SKU. La gobernanza reduce el radio del impacto antes de que comience la recuperación.</p><p>Por ejemplo, sin gobernanza, una consulta semántica para “fruta con alto contenido de vitamina C por menos de $4”, además de frutas, podría devolver botellas de vitaminas, zanahorias y pimientos verdes. El plano de control se encarga de que esos resultados no deseados ni siquiera se tengan en cuenta como parte de la expansión semántica.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdaa3ff1bb3afaa36/6a170f97acf088954bbe9c1f/6dccd5b8a94bfa81f68e3d1c4ad8929ce8cc4e5e-990x378.png" alt="Diagrama que muestra una consulta de búsqueda que fluye desde un usuario a través de un servidor de aplicaciones y un plano de control, donde se buscan reglas de coincidencia, la consulta se reescribe con intención semántica, incluyendo restricciones de categoría y precio, y los resultados se recuperan de un catálogo de productos, excluyendo los productos que no coinciden." /><p>Con esa restricción en vigor, el plano de control aplica una lógica de enrutamiento práctica:</p><ul><li><p><strong>Léxico</strong> para consultas de navegación y principales donde la precisión determinista es importante.</p></li><li><p><strong>Semántico</strong> para consultas de descubrimiento descriptivo donde la coincidencia de conceptos ayuda.</p></li><li><p><strong>Híbrido</strong> selectivamente, cuando las restricciones ya han sido aplicadas y el negocio acepta una recuperación más amplia.</p></li></ul><h2>De la arquitectura a la implementación</h2><p>El plano de control gestionado traduce la intención comercial en planes de ejecución deterministas y componibles, sin incorporar esa lógica en el código de la aplicación. Las políticas son datos: se emparejan en el momento de la consulta, se resuelven mediante estrategias explícitas de conflicto por campo y se aplican como transformaciones en cascada que producen resultados explicables. Elastic Services Engineering ha construido y desplegado esta arquitectura para equipos de comercio electrónico empresarial, utilizando patrones repetibles y aceleradores que abarcan el camino desde el concepto hasta la producción. Puedes ver una demostración de nuestra implementación de un plano de control en YouTube en: <a href="https://www.youtube.com/watch?v=e1GuL9CYWAk">Mejorar la relevancia de búsqueda en segundos: presentamos PRISM</a>.</p><h3><strong>Lo que se viene</strong></h3><p>La siguiente publicación aborda la implementación de forma práctica: cómo el percolator de Elasticsearch impulsa la consulta de políticas, incluso los mapeos de índices, los marcadores de límites, el seguimiento de frases basado en resaltados y los ejemplos concretos de consultas.</p><h2>Pon en práctica la búsqueda gobernada de comercio electrónico</h2><p>La arquitectura del plano de control descrita en esta publicación (resolución de conflictos por campo, transformaciones en cascada de políticas y enrutamiento de recuperación con restricciones de gobernanza) fue diseñada y construida por Elastic Services Engineering. Todos los patrones, capturas de pantalla y pipeline de transformación que se muestran en esta serie provienen de un sistema operativo creado por Elastic Services Engineering y validado con catálogos de productos a escala empresarial.</p><p>Si quieres implementar un plano de control regulado y basado en políticas en Elasticsearch, <a href="https://www.elastic.co/consulting">Elastic Services</a> te ayuda a lograrlo más rápido.</p><h2>Únete a la discusión</h2><p>¿Tienes preguntas sobre la gestión de búsquedas, las estrategias de recuperación o la arquitectura de búsqueda en el comercio electrónico? Únete a la <a href="https://discuss.elastic.co/">conversación general de la comunidad de Elastic</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture</guid>
    <category><![CDATA[Operaciones]]></category>
    <dc:creator><![CDATA[Alexander Marquardt,Honza Král,Taylor Roy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb84f89f4d9029df7/6a170f806234e077cddb1ab6/4e2cd5244ef8b9a05af6337a4825252f321a9a43-1377x768.png" length="0" type="image/png"/>
    <pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Por qué la búsqueda en el comercio electrónico necesita gobernanza]]></title>
    <description><![CDATA[Conoce por qué la búsqueda de ecommerce queda corta sin gobernanza, y cómo una capa de control garantiza resultados predecibles e impulsados por la intención, a la vez que mejora la recuperación.]]></description>
    <content:encoded><![CDATA[<p>Los minoristas de comercio electrónico deben gestionar distintos tipos de consultas muy diferentes dentro del mismo sistema. Un comprador que busca “naranjas” espera la fruta, no productos que contengan la palabra “naranja”, como el jugo de naranja o la mermelada de naranja, y no productos cítricos semánticamente relacionados. Un comprador que busca un “regalo para el abuelo al que le gusta lo dulce” necesita descubrimiento semántico, no coincidencia literal de palabras clave.</p><p>La <em>recuperación léxica</em> (coincidencia de texto), la <em>recuperación semántica</em> (coincidencia de conceptos) ni la <em>recuperación híbrida</em> (combinación de señales léxicas y semánticas) resuelven estos problemas por sí solas. La recuperación léxica puede arrojar cualquier resultado que contenga la palabra “naranjas”, mientras que la recuperación semántica pura en una consulta de alta intención como “naranjas” puede ampliarse hacia elementos relacionados como limones o toronjas. La recuperación híbrida combina estas señales léxicas y semánticas, pero aún no determina si esta consulta debe considerarse navegacional, qué restricciones deben aplicarse o qué políticas comerciales deben implementarse. La brecha no es la tecnología de recuperación en sí; es la ausencia de una capa de gobernanza que entienda de qué tipo de consulta se trata y qué restricciones deben implementarse antes de que comience la recuperación.</p><p>En este blog, abordamos la gobernanza de la búsqueda en el comercio electrónico, su relevancia y cómo garantizar una recuperación predecible y precisa con una capa de control.</p><h2>Qué significa la gobernanza en la búsqueda en el comercio electrónico</h2><p><em>Gobernanza</em>, en este contexto, significa introducir una capa de decisión entre la consulta del usuario y el motor de recuperación. Esta capa realiza las siguientes funciones:</p><ul><li><p>Clasifica la intención de la consulta: ¿se trata de navegación ("naranjas") o descubrimiento ("regalo para el abuelo")?</p></li><li><p>Aplica restricciones comerciales: ¿qué límites de categoría, reglas de elegibilidad, restricciones de disponibilidad o políticas de comercialización se aplican?</p></li><li><p>Apunta hacia la estrategia adecuada: ¿debería usar recuperación léxica, recuperación semántica o híbrida?</p></li></ul><p>Una capa de gobernanza determina qué método de recuperación debe emplearse para cada consulta, qué restricciones deben aplicarse y qué políticas empresariales deben implementarse antes de que comience la recuperación. Es importante no confundir la gobernanza con la recuperación híbrida: la recuperación híbrida es una estrategia que combina señales léxicas y semánticas, mientras que la gobernanza es la capa de decisión previa que determina si deben usarse señales léxicas, semánticas o híbridas.</p><h2>Situación actual: la implementación "espagueti" de la capa de aplicación</h2><p>Hoy en día, muchos minoristas intentan resolver esto agregando lógica directamente en la capa de aplicación. A menudo resulta en <em>código espagueti</em>, es decir, miles de líneas de afirmaciones “si-entonces” codificadas de forma rígida, regex y plantillas de búsqueda complejas.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdd7b33454d925cfd/6a1710f1e8fbce25ee39fd4d/f532b099ee103458e15563a711dae92952f8df02-1024x765.png" alt="Comparación de la lógica de aplicación codificada de forma fija y Elasticsearch: cómo Elasticsearch simplifica la clasificación y la recuperación sin reglas “si-entonces” complejas." /><p>Este enfoque puede proporcionar los resultados de búsqueda deseados como se muestra arriba; sin embargo, crea una fricción operativa significativa:</p><ul><li><p><strong>Dependencia de ingeniería:</strong> los usuarios empresariales y los comercializadores no pueden modificar el comportamiento de búsqueda sin tickets de ingeniería y largos ciclos de despliegue que a menudo abarcan varias semanas.</p></li><li><p><strong>Fragmentación:</strong> la lógica de búsqueda queda dispersa entre el código de la aplicación y las plantillas de búsqueda, y es difícil de explicar o auditar, lo que vuelve su evolución arriesgada.</p></li></ul><p>Incluso cuando los equipos reconocen la necesidad de enrutamiento, el debate a menudo se centra en la pregunta equivocada: qué método de recuperación elegir.</p><h2>La falsa elección: léxico vs. semántico vs. híbrido</h2><p>Los equipos de búsqueda suelen enmarcar el desafío como una elección estratégica de recuperación: léxico/BM25 frente a semántico/vectores frente a híbrido. Ese encuadre es comprensible (los métodos de recuperación importan), pero pasa por alto el modo de fallo más común en despliegues reales: usar un único enfoque de recuperación para todas las consultas dará resultados subóptimos.</p><p>La búsqueda comercial es una mezcla de intenciones fundamentalmente diferentes:</p><ul><li><p><strong>Navegación determinista y de alta intención</strong> ("naranjas", "leche", "chocolate sin maní", "aceite de oliva barato").</p></li><li><p><strong>Descubrimiento exploratorio</strong> ("chaqueta para hacer senderismo en las montañas", "regalo para una niña o niño de 12 años a quien le gusta la robótica").</p></li><li><p><strong>Restricciones operativas</strong> (disponibilidad, tamaño, precio, color).</p></li><li><p><strong>Merchandising y campañas</strong> (impulsar, relegar, campañas estacionales).</p></li></ul><p>Cuando el sistema enruta todo esto a través de la misma estrategia de recuperación, los resultados a menudo son sistemáticamente incorrectos de manera predecible porque el modelo operativo carece de gobernanza. Cuando los equipos no se dan cuenta de que esto es una falla en la gobernanza, responden con la única herramienta que tienen: ajustar más el sistema.</p><h2>Por qué “afinar la relevancia” puede volverse algo cíclico</h2><p>Sin una capa de enrutamiento, la "relevancia" suele convertirse en una lista de pendientes interminable:</p><ul><li><p>¿Por qué esta búsqueda muestra accesorios por encima del producto núcleo?</p></li><li><p>¿Por qué esta búsqueda principal de repente comenzó a mostrar elementos relacionados?</p></li><li><p>¿Por qué cambiaron los resultados después de que agregamos sinónimos, ajustamos los analizadores o habilitamos el híbrido?</p></li><li><p>¿Por qué el equipo de negocios necesita un lanzamiento de ingeniería para arreglar una consulta única?</p></li></ul><p>Los equipos responden con más ajustes: más sinónimos, más mejoras, más experimentos de reordenamiento, más excepciones en el código de la aplicación. Esto puede funcionar por un tiempo, pero a menudo produce un comportamiento frágil porque el sistema aún carece de una capa de decisión explícita para determinar el tipo de consulta y aplicar las restricciones adecuadas antes de la recuperación.</p><h2>La anatomía de la intención del comercio electrónico: cabeza y cola</h2><p>En esta sección, usamos “cabeza” y “cola” como una notación práctica para patrones comunes de búsqueda navegacional y exploratoria en el comercio electrónico. En el mundo real, muchas búsquedas contienen aspectos de ambos:</p><h3>Consultas de cabeza (intención determinista)</h3><p>Estas son consultas directas y de navegación en las que el usuario sabe exactamente lo que quiere:</p><ul><li><p>Intención de un solo artículo ("naranjas", "leche", "pan").</p></li><li><p>Marcas exactas o familias de productos ("iPhone 15 Pro", "Coca Light").</p></li><li><p>Referencias, números de modelo, tallas ("ABC123", "air max 270").</p></li></ul><p>Para estas consultas, la recuperación léxica puede ocuparse de la correspondencia de tokens (palabras coincidentes), pero la empresa también espera respetar las restricciones, arrojar clasificaciones predecibles y tener resultados controlables. Un comerciante necesita asegurarse de que una consulta se resuelva dentro de los límites correctos de la categoría, respete la elegibilidad y muestre prioridades específicas del negocio.</p><p>Se necesita una estructura de gobernanza para garantizar el cumplimiento de la resolución prevista. Por ejemplo, las “naranjas” deben mapearse a la categoría de productos, no a jugo de naranja, mermelada de naranja o soda de naranja.</p><h3>Consultas de cola (descubrimiento exploratorio)</h3><p>Estas son búsquedas descriptivas y ricas en intención donde los compradores están explorando:</p><ul><li><p>"Regalo para el abuelo que tiene debilidad por lo dulce"</p></li><li><p>"Chaqueta para senderismo en la montaña"</p></li><li><p>"Zapatos para estar de pie todo el día"</p></li></ul><p>La recuperación léxica a menudo tiene dificultades en este punto. La búsqueda semántica destaca porque puede conectar el concepto de la consulta con el producto, incluso cuando las palabras no coinciden. Pero la recuperación semántica por sí sola no suele ser suficiente. Las consultas reales a menudo requieren que se apliquen restricciones, independientemente del método de recuperación que se utilice.</p><h2>Las restricciones son ortogonales al método de recuperación</h2><p>Aplicar restricciones a la recuperación semántica no significa que sea una <em>búsqueda híbrida</em>. Son conceptos ortogonales. Las restricciones, como los filtros y las mejoras (boosts) en Elasticsearch, se pueden aplicar a cualquier recuperación léxica, semántica o híbrida. El desafío es decidir cómo interpretar la consulta, qué restricciones se deben aplicar y qué estrategia de recuperación se debe usar.</p><p>A continuación se muestran algunos ejemplos de consultas que combinan la recuperación con restricciones rígidas:</p><ul><li><p><strong>Naranjas:</strong> recuperación léxica para “naranjas” más una restricción de categoría, como “frutas” o “productos”, eliminando mermelada de naranja, jugo de naranja y soda de naranja.</p></li><li><p><strong>Frutas ricas en vitamina C por menos de $4:</strong> búsqueda semántica basada en la intención nutricional, además de filtros que limitan los resultados a la categoría de frutas y a productos por menos de $4.</p></li><li><p><strong>Zapatos cómodos para el trabajo:</strong> búsqueda semántica basada en la intención contextual, además de una restricción de categoría que limita los resultados a los zapatos.</p></li></ul><p>Estas consultas no se pueden manejar con un solo enfoque:</p><ul><li><p>La <strong>recuperación léxica pura</strong> a menudo es insuficiente en este caso porque frases como “alto contenido de vitamina C” o “cómodo” pueden no existir como atributos limpios y estructurados. Puede que sea necesario inferirlos a partir de descripciones de productos, reseñas o especificaciones.</p></li><li><p><strong>La recuperación semántica pura</strong> tampoco es suficiente porque, sin restricciones explícitas, una consulta como “frutas con alto contenido de vitamina C” podría ampliarse hacia suplementos vitamínicos, bebidas con sabor a fruta o vegetales con alto contenido de vitaminas fuera de la categoría y el rango de precios previstos.</p></li></ul><p>Una capa de gobernanza determina si una consulta necesita recuperación léxica, comprensión semántica, aplicación de restricciones o alguna combinación de estas. Sin esta capa, los equipos de comercio electrónico pueden caer en lo siguiente:</p><ul><li><p><strong>Restricción excesiva:</strong> uso de recuperación léxica para solicitudes semánticas (por ejemplo, "regalo para el abuelo").</p></li><li><p><strong>Restricción insuficiente: </strong>emplear consultas semánticas para consultas de cabeza con alta intención (por ejemplo, "naranjas").</p></li></ul><p>El desafío de la gobernanza es construir un sistema que pueda tomar la decisión correcta para cada clase de consulta.</p><h2>Qué sucede sin gobernanza</h2><p>El modo de falla más común es sencillo: los equipos toman la consulta del usuario sin procesar y la pasan directamente a una única estrategia de recuperación (léxica, semántica o híbrida), sin una capa de gobernanza intermedia.</p><h3>La búsqueda léxica no da el resultado esperado</h3><p>Cuando un usuario busca “naranjas”, una estrategia de recuperación léxica puede devolver cualquier cosa que contenga ese token: jugo de naranja, mermelada de naranja o soda de naranja. El sistema hizo coincidir el término correctamente, pero sin gobernanza es posible que no resuelva el contexto de compra previsto (la fruta).</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1b4595242ea6eb05/6a1710f35091684ba3e1bbd0/99abc7a46f9c56a26a68d0a089d7ab830b9b5568-1560x814.png" alt=" Ilustración que muestra cómo una sola consulta de &quot;naranjas&quot; devuelve diferentes resultados relacionados, como mermelada, naranjas frescas y refresco de naranja." /><h3>La recuperación semántica se amplía más allá de las limitaciones previstas</h3><p>Cuando un usuario busca “naranjas”, un sistema semántico puede recuperar elementos conceptualmente relacionados a través de conceptos de productos cercanos. El sistema puede comprender correctamente el dominio más amplio (fruta o productos), pero sin gobernanza explícita aún puede ampliarse más allá de la restricción intencionada del usuario (específicamente naranjas).</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltff1aba60c7b13fc8/6a1710f58b73cb3cef18a117/c9de86363ecbed499fe48259f47b3c5b2c26bc43-1568x796.png" alt="Diagrama que muestra cómo la búsqueda de “naranjas” se dirige a diferentes categorías de frutas, incluidas manzanas, naranjas y frutas mixtas." /><h3>La brecha es la gobernanza</h3><p>Lo que se requiere es una capa de decisión previa que determine la intención de la consulta y aplique las restricciones adecuadas antes de que comience la recuperación. Esto soluciona problemas como los siguientes:</p><ul><li><p>Elementos similares o relacionados que aparecen junto a lo que el usuario realmente quería.</p></li><li><p>Límites difusos de categorías ("bebidas" en vez de "frutas").</p></li><li><p>Incapacidad para implementar mejoras o campañas estacionales.</p></li><li><p>Resultados impredecibles e inexplicables.</p></li></ul><h2>Comprensión de intenciones y enrutamiento: el plano de control necesario</h2><p>Un sistema de búsqueda gestionada incorpora un plano de control ligero antes de la recuperación (antes de ejecutar una consulta en Elasticsearch). El control se explicará en detalle en las partes <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">3</a> y <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">4</a> de esta serie de blogs; por ahora, solo abarcaremos lo que puede hacer pero no cómo funciona:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt373bd838e1751998/6a1710f74a531b1e5436aa57/88c3d0f9731a128d73a765dcdffed897308110a6-2680x766.png" alt="Diagrama que muestra cómo se enrutan las diferentes consultas a través de un plano de control hacia los resultados de búsqueda de BM25 o de búsqueda semántica." /><p>Un plano de control puede detectar la intención, aplicar políticas comerciales y garantizar la estrategia de recuperación apropiada de la siguiente manera:</p><p><strong>1. Detectar señales de intención</strong></p><ul><li><p>¿Es probable que esta búsqueda sea de navegación en vez de descubrimiento?</p></li><li><p>¿Es una búsqueda principal conocida (leche, pan, bananas)?</p></li><li><p>Existe una interpretación conocida de producto, marca o categoría (por ejemplo, “naranjas” debería resolverse como fruta).</p></li><li><p>¿La consulta tiene un patrón tipo SKU?</p></li><li><p>¿La consulta se enmarca dentro de una campaña activa o una política estacional (por ejemplo, durante la Navidad, mejorar los resultados relacionados con el pavo)?</p></li><li><p>¿La consulta implica restricciones (categoría, atributos, exclusiones, precio, tamaño o color)?</p></li></ul><p><strong>2. Aplicar políticas empresariales y de gobernanza</strong></p><ul><li><p>Primero aplica restricciones deterministas (categoría, atributo, negación, disponibilidad).</p></li><li><p>Aplicar políticas activas de merchandising (mejorar/enterrar/fijar/anular).</p></li><li><p>Resuelve los conflictos con reglas de precedencia (por ejemplo, anulaciones de campaña frente a políticas globales).</p></li></ul><p><strong>3. Dirige a la estrategia de recuperación adecuada</strong></p><ul><li><p>Léxico (rápido, determinista) para consultas de navegación o de alta intención.</p></li><li><p>Recuperación semántica para búsquedas de descubrimiento real.</p></li><li><p>Híbrido en el que la combinación de señales léxicas y semánticas aporta valor añadido dentro de unos límites empresariales explícitos.</p></li></ul><p>En la práctica, la salida del plano de control no es simplemente “usar híbrido” o “usar semántico”. Es un plan de recuperación regulado: una interpretación de la intención del comprador, las restricciones y políticas que deben aplicar, y la estrategia de recuperación que debe ejecutar. Unos pocos ejemplos sencillos lo demuestran:</p><p>Consulta de comprador</p><p>Interpretación regulada</p><p>Ejemplo de plan de recuperación</p><p>“chocolate sin maní”</p><p>Consulta orientada al producto con una restricción de exclusión estricta</p><p>Recuperación léxica para chocolate más un filtro de exclusión para productos que contienen maní</p><p>“aceite de oliva barato”</p><p>Búsqueda de producto o categoría con restricción de precio</p><p>Recuperación léxica para aceite de oliva más un filtro de precio limitado al umbral del minorista para ser económico</p><p>“Fruta con alto contenido de vitamina C por menos de $4”</p><p>Consulta de descubrimiento que requiere comprensión semántica y restricciones estrictas</p><p>Búsqueda semántica basada en la intención nutricional, limitada a la categoría de frutas y filtrada a productos con un precio inferior a 4 dólares</p><p>Un plano de control selecciona la política y la estrategia de recuperación correctas para cada búsqueda de forma consistente, predecible y a escala. Esto hace que los métodos de recuperación avanzados sean más predecibles en producción porque las restricciones alineadas con la intención se aplican primero y las decisiones de enrutamiento son explícitas en lugar de implícitas.</p><h2>Cómo esto se relaciona con otros enfoques</h2><p>Algunos equipos usan modelos de incrustación mejorados para captar mejor la semántica de los productos, lo que puede mejorar de forma considerable la calidad de la búsqueda semántica. Otros utilizan enfoques de reclasificación, como <a href="https://www.elastic.co/docs/solutions/search/ranking/learning-to-rank-ltr">Learning To Rank (LTR)</a>, para optimizar el orden de los resultados basado en la participación o señales de negocio después de la recuperación. Ambos son valiosos y a menudo complementarios. Las incrustaciones superiores mejoran la coincidencia de similitudes. La reclasificación mejora el ordenamiento entre los candidatos recuperados.</p><p>La gobernanza aborda un aspecto diferente del problema: se sitúa en una etapa previa a la recuperación. Decide qué estrategia de recuperación utilizar (por ejemplo, léxica, semántica o híbrida), qué restricciones deterministas se requieren y qué consultas deben combinar varias políticas de negocio.</p><h2>Qué aporta un plano de control gestionado</h2><p>Una vez que se establece una capa de gobernanza, el modelo operativo cambia de forma rotunda. Las consultas críticas para los ingresos se vuelven predecibles. Los equipos de negocio pueden actualizar el comportamiento de búsqueda sin esperar los ciclos de lanzamiento de ingeniería. Y los métodos de recuperación avanzados (como los semánticos y los híbridos) pueden adoptarse de forma gradual, con mecanismos de enrutamiento y controles de seguridad, en vez de como un interruptor global de encendido o apagado.</p><p>La <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">siguiente publicación</a> de esta serie explora cómo se ve ese modelo operativo en la práctica y por qué puede ser tan importante como la tecnología de recuperación subyacente.</p><p>Si un comerciante tiene que abrir un ticket de Jira y esperar un despliegue para corregir una búsqueda crítica para los ingresos, el cuello de botella no es el motor; es el modelo operativo. La búsqueda moderna de comercio electrónico necesita una manera de traducir la intención comercial en un comportamiento de búsqueda controlado y auditable de manera rápida y segura, sin dejar de usar recuperación avanzada cuando aporta un valor medible.</p><h2>Lo que se viene</h2><p>Los patrones explorados en esta serie operan río arriba de la recuperación: traduciendo la intención del negocio en la estrategia de búsqueda correcta antes de que comience la generación de la búsqueda. En la <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">siguiente publicación</a>, pasamos del problema técnico al operativo: qué ocurre cuando los equipos de negocio pueden cambiar el comportamiento de búsqueda sin un despliegue de ingeniería, y por qué la gobernanza hace que eso sea seguro.</p><h2>Pon en práctica la búsqueda gobernada de comercio electrónico</h2><p>Los cuellos de botella de ingeniería, la lógica frágil de la capa de aplicación y los resultados de búsqueda impredecibles son problemas que Elastic Services puede ayudarte a resolver en los proyectos de servicios de comercio electrónico empresarial. La arquitectura del plano de control gobernado que se describe en esta serie fue desarrollada por Elastic Services Engineering.</p><p>Si tu equipo está dedicando recursos de ingeniería a convertir las solicitudes de merchandising en cambios de código, o si la lista de tareas pendientes relacionadas con la relevancia de las búsquedas parece no reducirse nunca, podemos ayudarte a evaluar tu arquitectura actual y a trazar un plan para lograr un sistema de búsqueda controlado y editable por el equipo de negocios. Ponte en contacto con <a href="https://www.elastic.co/consulting">Elastic Services</a>.  </p><h2>Únete a la discusión</h2><p>¿Tienes preguntas sobre la gestión de búsquedas, las estrategias de recuperación o la arquitectura de búsqueda en el comercio electrónico? Únete a la <a href="https://discuss.elastic.co/">conversación general de la comunidad de Elastic</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval</guid>
    <category><![CDATA[Operaciones]]></category>
    <dc:creator><![CDATA[Alexander Marquardt,Honza Král,Taylor Roy]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt840c7a0a5b92080f/6a1710f967045b3e5445c2cd/3793259b01a5653a7520393a2f006610de0d21e7-1280x720.png" length="0" type="image/png"/>
    <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>