<?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[Honza Král - 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[Honza Král - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/de/search-labs/author/honza-kral</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/author/honza-kral</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/author/honza-kral.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Fri, 18 Sep 2026 21:42:00 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Agentische KI-Suche mit deterministischen Leitplanken in Elasticsearch zur sicheren Ausführung von Abfragen]]></title>
    <description><![CDATA[Agentische KI-Suchsysteme versagen häufig, wenn LLMs Abfragen direkt generieren. Erfahren Sie, wie deterministische Leitplanken und eine Steuerungsebenenarchitektur eine sichere, zuverlässige und kontrollierte Abfrageausführung mit Elasticsearch ermöglichen.]]></description>
    <content:encoded><![CDATA[<p><a href="https://www.elastic.co/search-labs/blog/agentic-ai-search-deterministic-guardrail-query-execution">Teile 1 bis 7</a> dieser Serie beschrieben eine gesteuerte Steuerungsebene für E-Commerce-Suchen. Ein Nutzer tippt eine Abfrage ein. Die Steuerungsebene klassifiziert die Absicht, setzt geschäftliche Einschränkungen durch, löst Vorgabenkonflikte und leitet zur entsprechenden Abrufstrategie weiter, und das alles, bevor der Produktkatalog überhaupt abgefragt wird. Die gesamte Architektur geht davon aus, dass die Eingabe eine von einem menschlichen Käufer eingegebene Suchzeichenfolge ist.</p><p>Dieser letzte Beitrag fragt: Was ändert sich, wenn die Eingabe stattdessen von einem KI-Agenten kommt?</p><p>Die Antwort ist, dass sich die Architektur nicht ändert, aber die Einsätze schon. Jede Eigenschaft der beherrschten Kontrollebene, die für von Menschen verfasste Abfragen von Bedeutung ist, ist <em>umso wichtiger</em>, wenn der vorgelagerte Entscheidungsträger ein großes Sprachmodell (LLM) ist. Determinismus, Überprüfbarkeit, Konfliktlösung und Zwangsdurchsetzung werden zu kritischen Leitplanken anstatt zu betrieblichen Annehmlichkeiten, da das System, das die Eingabe produziert, von Natur aus probabilistisch ist.</p><h2>Das agentische Suchproblem</h2><p>Der gängigste Ansatz für KI-gesteuerte Suche ist unkompliziert: Man gibt dem LLM das Datenbankschema, stellt Geschäftsregeln in der Eingabeaufforderung bereit und lässt den Agenten die Abfrage direkt generieren.</p><p>Für einen E-Commerce-Chatbot bedeutet dies, die Elasticsearch-Index-Mapping, Feldtypen, Kategorietaxonomien, Preislogik und Geschäftsbeschränkungen in das Kontextfenster des Agenten zu injizieren und dann das LLM zu bitten, natürliche Sprache in gültige Elasticsearch Query DSL zu übersetzen. Das LLM wird zum Abfrageautor.</p><p>Dieser Ansatz funktioniert in Demos. Es scheitert aus vier Gründen in der Produktion.</p><h3>Kontextaufblähung</h3><p>Ein Enterprise-E-Commerce-Index-Mapping ist kein triviales Dokument. Felddefinitionen, verschachtelte Objekte, Mehrfeldkonfigurationen und Analysatoreinstellungen können auf Tausende von Token ausgeführt werden, bevor Geschäftslogik hinzugefügt wird. Zusätzlich zum Mapping benötigt der Agent Kategorientaxonomien (die im Enterprise-E-Commerce Zehntausende von Werten enthalten können), Preisregeln, Markenhierarchien, Zulassungsbeschränkungen und Kampagnenlogik.</p><p>Das Ergebnis ist ein Kontextfenster, das von strukturellen Metadaten dominiert wird, anstatt von der eigentlichen Absicht des Nutzers. Dies erhöht die Latenzzeit, steigert die Token-Kosten und verschlechtert die Fähigkeit des LLM, Anweisungen zu befolgen, wenn der Kontext wächst. Dies ist ein gut dokumentiertes Phänomen, das manchmal als <a href="https://www.trychroma.com/research/context-rot"><em>Kontextverfall</em></a> bezeichnet wird: Je länger der Prompt wird, desto schwächer wird die Aufmerksamkeit des Modells für eine bestimmte Anweisung.</p><h3>Probabilistische Halluzination</h3><p>LLMs generieren Abfragen basierend auf Mustern in ihren Trainingsdaten und dem bereitgestellten Kontext. Wenn das Modell aufgefordert wird, Elasticsearch Query DSL zu generieren, kann es Feldnamen erzeugen, die nicht existieren, syntaktisch ungültige Abfrageklauseln erstellen, Filtertypen auf die falschen Feldtypen anwenden oder Abfragen erzeugen, die zwar syntaktisch gültig, aber semantisch falsch sind und Ergebnisse liefern, die nicht der Absicht des Nutzers entsprechen.</p><p>Der <a href="https://cloud.google.com/blog/products/databases/how-to-get-gemini-to-deeply-understand-your-database">BIRD-Benchmark für Text-to-SQL</a> von Google Cloud veranschaulicht die Grenzen dieses Ansatzes. Googles hochmodernes Single-Model-Ergebnis erreichte eine Genauigkeit zwischen 70 % und 80 %, was bedeutet, dass fast jede vierte generierte Abfrage falsch war. Dies gilt für SQL, das weitaus stärker standardisiert ist als die Elasticsearch Query DSL. Die Fehlerquote für LLM-generierte Elasticsearch-Abfragen in einer echten Produktionsumgebung mit komplexen Mappings und geschäftsspezifischer Semantik wäre wahrscheinlich höher.</p><p>Bei einem umsatzkritischen E-Commerce-System ist eine Fehlerrate von einem Viertel der Abfragen kein Optimierungsproblem, das iterativ gelöst werden kann. Es ist eine architektonische Einschränkung des Ansatzes.</p><h3>Die Sicherheitslücke</h3><p>Wenn das LLM Zugriff auf das Datenbankschema hat und als Abfrageautor fungiert, ist das System anfällig für indirekte Prompt-Injektion. Ein Nutzer, der mit einem E-Commerce-Chatbot interagiert, kann Eingaben erstellen, um den Agenten so zu manipulieren, dass er unbeabsichtigte Abfragen generiert.</p><p>Dies ist kein theoretisches Risiko. <a href="https://www.elastic.co/blog/owasp-top-10-for-llms-guide">Prompt-Injektion</a> ist eine der am aktivsten erforschten Angriffsflächen in eingesetzten LLM-Systemen. Das grundlegende Problem ist, dass es beim Erstellen der Abfrage durch den Agent keine strukturelle Grenze zwischen Nutzerintention und Abfrageausführung gibt. Das LLM interpretiert gleichzeitig die Nutzerabfrage und erstellt die Datenbankoperation. Jede Manipulation der ersten wirkt sich direkt auf die zweite aus.</p><h3>Fehler beim Skalieren mit hoher Kardinalität</h3><p>Bestimmte E-Commerce-Felder haben extreme Kardinalität. Ein Produktkatalog kann 17.000 Kategoriewerte, Tausende von Markennamen und Hunderte von Attributkombinationen enthalten. Standardmäßige agentische Workflows erfordern, diese Werte in den Kontext einzufügen, damit das LLM beim Erstellen einer Abfrage den richtigen auswählen kann.</p><p>Dies führt zu einem unmöglichen Kompromiss: Entweder werden alle möglichen Werte eingefügt (was enorm viel Kontext verbraucht und die Leistung mindert), es wird nur eine Teilmenge eingefügt (und man muss in Kauf nehmen, dass der Agent nicht auf Werte außerhalb dieser Teilmenge zugreifen kann), oder es wird auf eine unkontrollierte Suche zurückgegriffen. Dies knüpft direkt an das Kernproblem aus <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">Teil 1</a> an: Wenn das LLM nach „Orangen“ sucht und Elasticsearch Orangenlimonade zurückgibt, verschlechtert sich das Chat-Erlebnis auf die gleiche Weise wie das Sucherlebnis. Das Fehlen von Governance bedeutet, dass das System die beabsichtigte Lösung des Käufers nicht durchsetzen kann.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt14a980ba09d88ee8/6a16f34d66c4f98516f8bd97/f11c44feb5291002d4ec4ac79484ea39d4e48a95-642x133.png" alt="Ein Flussdiagramm zeigt eine Nutzerabfrage „Ich möchte ein erfrischendes Getränk zubereiten …“, die zu einem LLM-Ausgang von „Orangen“ führt, woraufhin ein Anwendungsserver eine Textabfrage nach Orangen an einen Produktkatalog sendet, die schließlich Ergebnisse für Marmelade, ganze Orangen und Orangenlimonade liefert." /><p>Das dynamische Abrufen relevanter Werte auf der Grundlage der Abfrage ist eine bekannte Alternative, die jedoch einen zusätzlichen, nicht-deterministischen Schritt einführt, bei dem die Abfrage selbst relevante Werte verfehlen kann. Zusätzlich erhöht dies die Latenz und Komplexität jeder Abfrage.</p><h2>Die architektonische Alternative: Entkopplung von Absicht und Ausführung</h2><p>Die in den Teilen 1 bis 7 beschriebene gesteuerte Kontrollebene bietet einen grundlegend anderen Ansatz. Anstatt dass das LLM die endgültige Abfrage erstellt, wird die Rolle des LLM auf eine einzige, klar abgegrenzte Aufgabe reduziert: das Extrahieren einer Suchabsichts-Zeichenfolge aus der natürlichen Spracheingabe des Nutzers.</p><p>Der Nutzer sagt: „Ich suche günstige braune Schuhe.“ Die Aufgabe des Agenten besteht nicht darin, eine Elasticsearch-Abfrage zu generieren. Er soll die Suchabsicht (in diesem Fall etwa „billige braune Schuhe“) extrahieren und an die Steuerungsebene weiterleiten. Die Steuerebene tut dann das, was sie immer getan hat: Sie perkoliert die Absichtszeichenkette gegen gespeicherte Richtlinien, erstellt passende Richtlinien durch kaskadierende Transformationen, löst Konflikte deterministisch und erzeugt eine gesteuerte Elasticsearch-Abfrage.</p><p>Das LLM sieht das Index-Mapping nie. Es weiß nie etwas über Feldtypen, Kategorientaxonomien oder Preisschwellenwerte. Es konstruiert niemals eine Abfrageklausel. Es läuft auf der natürlichen Sprachseite einer architektonischen Grenze, die wir als <em>Metadaten-Luftlücke</em> bezeichnen, eine strikte Trennung zwischen der probabilistischen Komponente (dem LLM) und der strukturierten Datenschicht (Schema, Richtlinien und Abfragekonstruktion).</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb4d701bfa4f2f279/6a16f34e1949f70ddce7a78d/12dacc77f0c481c9ada84725eff370c7e2c4b429-642x143.png" alt="Ein Flussdiagramm zeigt eine Nutzerabfrage „Ich möchte ein erfrischendes Getränk zubereiten …“, die zu einer LLM-Ausgabe von „Orangen“ führt. Daraufhin sendet ein Anwendungsserver die Abfrage an eine Steuerungsebene und empfängt eine umgeschriebene Abfrage, mit der eine Textabfrage nach Orangen in der Kategorie „Früchte“ durchgeführt wird. Abschließend erfolgt eine Produktsuche, die Bilder von Orangen zurückgibt." /><h3>Was der Metadaten-Air-Gap bietet</h3><ul><li><p><strong>Schemablindheit.</strong> Das LLM hat keinen Zugriff auf das Datenbankschema und kann daher weder ungültige Abfragen generieren, Feldnamen erfinden noch so manipuliert werden, dass strukturelle Informationen offengelegt werden. Das Schema existiert nur auf der deterministischen Seite der Luftlücke.</p></li><li><p><strong>Minimaler Kontext.</strong> Anstatt Tausender Token von Mapping-Daten, Geschäftsregeln und Kategorie-Taxonomien enthält der Prompt des LLM nur eine Persona und Anweisungen zur Intent-Extraktion. Dadurch werden die Token-Kosten, die Latenzzeit und der Kontextwechsel drastisch reduziert.</p></li><li><p><strong>Deterministische Ausführung.</strong> Jede Abfrage, die Elasticsearch erreicht, wird von der Kontrollebene mit menschengeprüften Vorgabenvorlagen erstellt und nicht probabilistisch von einem LLM generiert. Syntaktische Gültigkeit ist garantiert. Die semantische Korrektheit wird durch dasselbe Vorgaben-Framework sichergestellt, das in den Teilen 1 bis 6 beschrieben wurde.</p></li><li><p><strong>Sicherheit durch Architektur.</strong> Prompt-Injektion wird strukturell unwirksam. Selbst wenn ein Nutzer den Agenten dazu manipuliert, eine ungewöhnliche Intent-Zeichenfolge zu erzeugen, wird diese Zeichenfolge gegen gespeicherte Richtlinien perkoliert. Wenn keine Vorgabe übereinstimmt, wird keine Abfrage generiert. Der Nutzer kann den Agenten nicht anweisen, eine Abfrage zu erstellen, da der Agent keine Abfragen erstellt. Die Steuerungsebene tut dies, und die Steuerungsebene ist deterministisch.</p></li></ul><h2>Wie die einzelnen Teile zusammenpassen</h2><p>Die folgende exemplarische Vorgehensweise zeigt, wie die kontrollierte Steuerungsebene eine agentenvermittelte Abfrage handhabt.</p><h3>Schritt 1: Der Nutzer spricht mit dem Agenten</h3><p>Ein Kunde, der mit einem E-Commerce-Chatbot interagiert, sagt: „Ich suche günstige Schokolade, aber ohne Erdnüsse.“</p><h3>Schritt 2: Der Agent extrahiert die Absicht</h3><p>Die Rolle des LLM besteht in der Absichtsextraktion, nicht in der Abfragegenerierung. Auf Basis eines minimalen Prompts, der den Agenten anweist, die Produktabsicht zu ermitteln, erzeugt er eine Suchabfrage: „billige Schokolade ohne Erdnüsse“.</p><p>Dies ist eine einfache Klassifizierungsaufgabe. Das LLM braucht nicht das Index-Mapping, die Kategorie-Taxonomie oder die Preisregeln, um es auszuführen. Es muss die natürliche Sprache verstehen, und genau darin sind LLMs gut.</p><h3>Schritt 3: Die Kontrollebene steuert die Abfrage</h3><p>Die Absichtszeichenfolge „billige Schokolade ohne Erdnüsse“ wird an die Steuerungsebene weitergeleitet, die sie mit dem Vorgaben-Index perkolieren. Drei Vorgaben stimmen überein:</p><ul><li><p>Die Vorgabe „billig“ (extrahiert „billig“ und wendet einen Preisfilter basierend auf der Produktkategorie an).</p></li><li><p>Die Vorgabe „Schokolade“ (beschränkt die Ergebnisse auf Schokoladenkategorien).</p></li><li><p>Die Vorgabe „ohne“ (Negation; extrahiert das Ausschlussziel und wendet einen <code>must_not</code>-Filter an)</p></li></ul><p>Die Steuerungsebene wendet diese Vorgaben durch dieselbe kaskadierende Transformation an, die in <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> und <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">Teil 4</a> beschrieben ist: Prioritätsreihenfolge, Konfliktlösung pro Feld, Verfolgung verbrauchter Phrasen. Wenn auch eine „Weihnachtskampagne“-Vorgabe aktiv ist, setzt sie sich mit den Produktvorgaben genau so zusammen, wie in <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> beschrieben. Die Beteiligung des Agenten ändert das Governance-Modell überhaupt nicht.</p><h3>Schritt 4: Die gesteuerte Abfrage wird ausgeführt</h3><p>Die Steuerungsebene erzeugt eine vollständig gesteuerte Elasticsearch-Abfrage: eine Suche nach „Schokolade“, beschränkt auf die entsprechenden Kategorien, mit einer Preisobergrenze, die sich aus der Vorgabe „billig“ ergibt, einem Ausschlussfilter für erdnusshaltige Produkte und der Anwendung etwaiger aktiver Kampagnen-Boosts. Wenn die Vorgabe „Schokolade“ auch wirtschaftliche Optimierungsgewichte (<a href="https://www.elastic.co/search-labs/blog/ecommerce-search-optimization-query-governed">Teil 7</a>) einschließt, werden diese ebenfalls angewendet. Der Margenaufschlag ist auf 3,0x gesetzt, da „Schokolade“ eine Browsing-Abfrage ist, bei der der Einzelhändler von der Förderung von Produkten mit höherer Marge profitiert. Wenn der Käufer eine Kaufhistorie (<a href="https://www.elastic.co/search-labs/blog/elasticsearch-personalized-search-governed-ecommerce">Teil 6</a>) hat, werden Personalisierungssignale darüber geschichtet. Diese Abfrage ist syntaktisch gültig durch Konstruktion und semantisch korrekt durch Vorgabendesign.</p><h3>Schritt 5: Rückgabe der Ergebnisse durch den Agenten</h3><p>Die Produktergebnisse werden an den Agenten zurückgegeben, der sie dem Nutzer im Dialog präsentiert. Die Rolle des Agenten auf dem Rückgabepfad ist die Präsentation: Formatierung der Ergebnisse, Beantwortung von Folgefragen, Bereitstellung von Produktdetails. Der Abruf selbst war geregelt, deterministisch und erklärbar.</p><h2>Wozu der Agent gut ist (und wozu nicht)</h2><p>Diese Architektur nutzt die Stärken des LLM und schützt das System vor seinen Schwächen.</p><p>LLMs sind hervorragend darin, die Absicht der natürlichen Sprache zu verstehen. „Ich suche nach billiger Schokolade, nichts mit Erdnüssen“ ist eine Aufgabe des natürlichen Sprachverständnisses, bei der die Absicht analysiert, Produktreferenzen identifiziert und Negation erkannt wird. LLMs handhaben dies zuverlässig, da es sich um ein Klassifizierungsproblem handelt, nicht um ein Generierungsproblem. Die Ausgabe ist eine kurze Absichtszeichenfolge, keine komplexe strukturierte Abfrage.</p><p>LLMs haben Schwierigkeiten, unter komplexen Rahmenbedingungen präzise strukturierten Ausgang zu erzielen. Die Erstellung gültiger Elasticsearch-Abfrage-DSL erfordert exakte Feldnamen, korrekte Klauselverschachtelung, geeignete Filtertypen für jedes Feld und eine konsistente Anwendung von Geschäftsregeln über Tausende von Randfällen. Dies sind genau die Eigenschaften, die ein deterministisches System trivialerweise erzwingt und die ein probabilistisches System unzuverlässig erzwingt.</p><p>Die gesteuerte Steuerungsebene platziert jede Komponente an ihrem Platz: das LLM auf der Seite der natürlichen Sprache, die deterministische Vorgaben-Engine auf der Seite der Abfragekonstruktion, und eine architektonische Grenze zwischen ihnen.</p><h2>Die Governance begrenzt den Explosionsradius.</h2><p>Dies ist derselbe Einblick aus <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a>, erweitert auf den agentischen Kontext. In Teil 3 haben wir festgestellt, dass Governance die semantische Suche sicherer macht, indem sie die Kandidatenmenge vor Beginn der Suche eingrenzt. Eine semantische Suche über 500 Produkte in einer regulierten Kategorie ist eine ganz andere Sache als eine semantische Suche über 500.000 SKUs.</p><p>Das gleiche Prinzip gilt für agentenvermittelte Abfragen. Ohne entsprechende Steuerung könnte ein Agent, der „billige Schokolade“ falsch interpretiert, eine Abfrage generieren, die den gesamten Katalog ohne Preisbeschränkung, ohne Kategoriefilter und ohne Ausschlüsse durchsucht. Selbst wenn der Agent eine unvollständige Absichtszeichenfolge abgibt, schränkt die Kontrollebene die Abfrage auf die Richtlinien ein, die übereinstimmen. Im schlimmsten Fall werden weniger Richtlinien ausgelöst, nicht dass eine unbegrenzte Abfrage den Produktkatalog trifft.</p><p>Governance engt den Explosionsradius von probabilistischen Fehlern ein. Dies gilt unabhängig davon, ob es sich bei der probabilistischen Komponente um ein semantisches Retrieval-Modell oder einen LLM-Agenten handelt.</p><h2>LLM-vorgeschlagene Richtlinien: Erweiterung der Abdeckung</h2><p>In <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Teil 2</a> wurde die Idee eingeführt, dass ein LLM neue Richtlinien vorschlagen kann, die in dieselbe Author → Test → Promote-Pipeline aufgenommen werden wie von Menschen verfasste. Im Agentenkontext wird das zu einer starken Feedback-Schleife.</p><p>Ein LLM kann Abfrageprotokolle analysieren, Muster identifizieren, bei denen die Kontrollebene keine Matching-Vorgabe hat (Abfragen, die nicht zur unveränderten Abruf gelangen), und neue Vorgaben vorschlagen, um diese Lücken zu schließen. Ein Merchandiser prüft jeden Vorschlag, testet ihn und fördert ihn, wenn er das erwartete Verhalten hervorruft. Das Governance-Modell stellt sicher, dass keine von LLM vorgeschlagene Vorgabe ohne menschliche Validierung in die Produktion gelangt.</p><p>Im Laufe der Zeit entsteht dadurch ein positiver Kreislauf: Die Vorgabenabdeckung der Steuerungsebene erweitert sich, der Anteil der Abfragen, die eine unveränderte Abrufung erfordern, schrumpft, und das System wird zunehmend geregelt, wobei jede Vorgabe überprüfbar, versioniert und individuell umkehrbar ist.</p><h2>Das breitere Muster: Deterministische Leitplanken für probabilistische Systeme</h2><p>Die in dieser Serie beschriebene Architektur, eine deterministische Kontrollebene, die zwischen einer probabilistischen Eingangsquelle und einem Datenabrufsystem angesiedelt ist, ist nicht spezifisch für die E-Commerce-Suche. Das gleiche Muster gilt überall dort, wo ein KI-Agent mit strukturierten Daten interagieren muss.</p><p>Ein Agent, der eine SQL-Datenbank abfragt, steht vor denselben Herausforderungen: Kontextaufblähung durch Schema-Injektion, halluzinierte Spaltennamen, Risiken der Prompt-Injektion und Auswahl von Werten mit hoher Kardinalität. Ein Agent, der mit einem Ticketsystem wie Jira, einem Customer-Relationship-Management-System (CRM) wie Salesforce oder einem Code-Repository wie GitHub interagiert, steht vor ähnlichen Problemen. In jedem Fall ist die Kernarchitekturfrage dieselbe: Sollte das LLM die Abfrage erstellen, oder sollte das LLM die Absicht extrahieren und an eine deterministische Schicht weitergeben, die die Abfrage erstellt?</p><p>Die geregelte Kontrollebene bietet eine wiederholbare Antwort auf diese Frage. Richtlinien sind Daten. Die Extraktion von Absichten ist die Aufgabe des LLM. Die Abfragekonstruktion ist die Aufgabe der Steuerungsebene. Die Metadaten-Luftlücke hält sie getrennt. Und das Governance-Framework (Priorisierungsreihenfolge, Konfliktlösung, kaskadierende Transformationen, Überprüfbarkeit) stellt sicher, dass die deterministische Schicht bei wachsender Anzahl von Richtlinien operationell handhabbar bleibt.</p><h2>Fazit</h2><p>Die in dieser Reihe beschriebenen E-Commerce-Suchsteuerungsmuster (Richtlinien als Daten, Autor → Test → Workflow-Förderung, kaskadierende Transformationen, Konfliktlösung pro Feld, Percolator-basiertes Reverse Matching und mehrstufiges Fallback) wurden für eine Welt entwickelt, in der ein Händler Richtlinien erstellt und ein Käufer Abfragen eingibt. Aber die Architektur kann viel mehr ermöglichen als ihr ursprünglicher Anwendungsfall.</p><p>Wenn die Eingabequelle ein KI-Agent anstelle eines menschlichen Käufers ist, wird die gesteuerte Kontrollebene zur kritischen Sicherheitsschicht zwischen einem probabilistischen System und einem Produktionsdatenspeicher. Es bietet die deterministischen Garantien (syntaktische Gültigkeit, semantische Korrektheit, Überprüfbarkeit und Sicherheit), die Unternehmenssysteme benötigen und die LLMs allein nicht bieten können.</p><p>Die deterministische Steuerungsebene ersetzt den KI-Agenten nicht. Dadurch kann der KI-Agent sicher eingesetzt werden.</p><h2>Setzen Sie die reglementierte E-Commerce-Suche in die Praxis um</h2><p>Die in dieser Serie beschriebene Architektur der Steuerebene, vom Paradigma der Vorgaben als Daten über die perkolatorbasierte Suche bis hin zu Personalisierung, wirtschaftlicher Optimierung und dem agentenbasierten Luftraum, wurde von Elastic Services Engineering entwickelt und gebaut. Jedes in dieser Serie beschriebene Muster stammt aus einem funktionierenden System, das anhand von Produktkatalogen auf Unternehmensebene erstellt und validiert wurde.</p><p>Wenn Ihr Team KI-gestützte Sucherlebnisse entwickelt und deterministische Leitplanken für agentenvermittelte Abfragen benötigt, oder wenn Sie eine kontrollierte, vom Unternehmen editierbare Sucharchitektur auf Elasticsearch implementieren möchten, können die Elastic Professional Services Ihre Implementierung beschleunigen. Wenden Sie sich an <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Nehmen Sie an der Diskussion teil</h2><p>Haben Sie Fragen zur Suchsteuerung, zu Abrufstrategien oder zur Sucharchitektur im E-Commerce? Nehmen Sie an der <a href="https://discuss.elastic.co/">Diskussion der Elastic-Community</a> teil.</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[Operativer Betrieb]]></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[Personalisierung der E-Commerce-Suche: Integration von Kaufverlauf und Nutzerkohorten]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie in Elasticsearch ein personalisiertes E-Commerce-Sucherlebnis schaffen, ohne gegen die Governance-Richtlinien zu verstoßen. In diesem Beitrag erfahren Sie, wie Sie Produkte hervorheben können, die ein Kunde bereits gekauft hat, und wie Sie kohortenspezifische Richtlinien auf der Grundlage von Nutzerprofilen aktivieren können.]]></description>
    <content:encoded><![CDATA[<p><a href="https://www.elastic.co/search-labs/blog/series/governed-search-patterns">Die Teile 1 bis 5</a> dieser Serie beschreiben eine gesteuerte Steuerungsebene, die die Absicht klassifiziert, Einschränkungen durchsetzt, Richtlinienkonflikte löst und zur entsprechenden Abrufstrategie weiterleitet, alles bevor der Produktkatalog abgefragt wird. Jeder bisher beschriebene Mechanismus behandelt alle Käufer identisch. Eine Suche nach „Schokolade“ liefert immer das gleiche Ergebnis, egal ob der Käufer Veganer ist, ein Elternteil, der für den Geburtstag eines Kindes einkauft, oder ein Halal-Konsument.</p><p>Dieser Beitrag stellt zwei Personalisierungsmechanismen vor, die die gesteuerte Steuerungsebene erweitern, ohne deren Architektur zu verändern. Beide Mechanismen wirken multiplikativ mit der Governance-Ebene aus den Teilen 1 bis 5 zusammen: Richtlinien werden weiterhin angewendet, Einschränkungen werden weiterhin durchgesetzt, Konflikte werden weiterhin gelöst und Personalisierungssignale werden in dieselbe gesteuerte Abfrage integriert, wodurch sichergestellt wird, dass die von Elasticsearch zurückgegebenen Ergebnisse bereits personalisiert sind.</p><p>Der erste Mechanismus fördert Produkte, die der einzelne Käufer zuvor gekauft hat. Der zweite Mechanismus aktiviert kohortenspezifische Richtlinien, die auf dem Profil des Käufers basieren. Gemeinsam zeigen sie, dass Personalisierung kein separates System ist, das an die Suche angehängt oder als Nachbearbeitung der Suchergebnisse angewendet wird; sie ist vielmehr eine natürliche Erweiterung der richtlinienbasierten Steuerungsebene.</p><p>Einen detaillierten Einblick in die mathematischen Grundlagen der in diesem Beitrag verwendeten Personalisierungstechniken finden Sie unter <a href="https://alexmarquardt.com/elastic/personalizing-search-in-elasticsearch-without-ml-post-processing/">Personalisierung der Suche in Elasticsearch ohne ML-Nachbearbeitung</a> sowie unter <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-relevance-cohort-aware-ranking-elasticsearch">Kohortenorientiertes Ranking in Elasticsearch</a>.</p><p>Um in einer Live-Demonstration zu sehen, wie sich der Kaufverlauf nutzen lässt, um die Suchergebnisse für wiederkehrende Kunden zu verbessern, sehen Sie sich das Video an: <a href="https://www.youtube.com/watch?v=TGf_pOWHA5M">Nachvollziehbare Personalisierung: Verbesserung der Suche anhand des Kaufverlaufs</a>.</p><h2>Optimierung des individuellen Kaufverlaufs</h2><p>Die einfachste Form der Personalisierung ist auch eine der effektivsten: Wenn ein Käufer ein Produkt bereits gekauft hat, sollte es hervorgehoben werden, wenn er nach etwas Ähnlichem sucht. Ein Kunde, der regelmäßig eine bestimmte Marke von Schokoladenkeksen kauft, sollte diese Kekse bei der Suche nach „Keksen“ weiter oben in der Rangliste sehen, nicht, weil ein Modell eine Präferenz vorhergesagt hat, sondern weil es direkte Verhaltenshinweise dafür gibt.</p><h3>So funktionierts</h3><p>Wenn eine Suchanfrage eine Benutzerkennung enthält, wie es beispielsweise bei einem Nutzer mit einer offenen Sitzung der Fall wäre, führt die Steuerungsebene zwei Elasticsearch-Abfragen parallel mithilfe eines Thread-Pools aus:</p><ol><li><p>Die Perkolator-Abfrage gegen den Richtlinienindex (die gleiche Governance-Abfrage, die in den Teilen 3 und 4 beschrieben wurde).</p></li><li><p>Eine Abfrage zum Kaufverlauf anhand eines <code>user_purchases</code>-Index, die nach <code>term(user_id)</code> auf den bestimmten Nutzer gefiltert wurde und dann die aktuelle Suchzeichenfolge mit den Produkttiteln dieses Nutzers abgleicht.</p></li></ol><p>Diese Prozesse laufen parallel (keiner wartet auf den anderen), sodass die Personalisierungsabfrage keine nennenswerte Latenz in der Governance-Pipeline verursacht.</p><p>Die Kaufverlauf-Abfrage verwendet die <a href="https://www.elastic.co/docs/manage-data/data-store/text-analysis">Textanalyse von Elasticsearch</a> (Stemming, Tokenisierung), um die aktuelle Suchzeichenfolge mit gespeicherten Produkttiteln abzugleichen. Das bedeutet, dass eine Suche nach „Cookies“ durch eine Standard-Textanalyse einen früheren Kauf von „Brownie-Cookies“ findet, ohne dass eine exakte Übereinstimmung der Zeichenketten erforderlich ist.</p><h3>Berechnung von Boost-Gewichten</h3><p>Nicht alle früheren Käufe verdienen die gleiche Aufwertung. Das Gewicht berücksichtigt zwei intuitive Faktoren: wie oft der Kunde das Produkt gekauft hat und wie aktuell es ist. Ein Produkt, das letzte Woche 15 Mal gekauft wurde, ist ein viel stärkeres Signal als ein Produkt, das vor sechs Monaten einmal gekauft wurde. Bei der Gewichtung wird die Häufigkeit logarithmisch skaliert (damit ein einzelner Artikel, der besonders häufig gekauft wurde, nicht alle anderen Artikel überlagert) und die Aktualität exponentiell abgewichtet (damit ältere Käufe mit der Zeit auf natürliche Weise an Bedeutung verlieren).</p><p>Die mathematischen Details zur Boost-Formel finden Sie unter <a href="https://alexmarquardt.com/elastic/personalizing-search-in-elasticsearch-without-ml-post-processing/">Personalisierung der Suche in Elasticsearch ohne ML-Nachbearbeitung</a>.</p><h3>Wie es zu einer Abfrage wird</h3><p>Die Kaufverlaufs-Boosts werden als oberste Bewertungsschicht in die Abfrage integriert und umfassen die Filter und Boosts der Governance-Richtlinien aus Teil 3 und 4 sowie alle<a href="https://www.elastic.co/search-labs/blog/function-score-query-boosting-profit-popularity-elasticsearch"> Geschäftssignal-Boosts wie Marge und Beliebtheit</a> (die wir in Teil 7 näher betrachten werden). Das bedeutet, dass ein Produkt, das aufgrund einer Governance-Richtlinie entfernt wurde, nicht aufgrund eines positiven Kaufverlaufs wieder angezeigt wird. <em>Die Governance</em> steuert den Ergebnissatz; die <em>Personalisierung</em> passt die Reihenfolge innerhalb dieses Satzes an. Produkte ohne Kaufverlauf werden nicht benachteiligt. Das durch die Governance festgelegte Ranking bleibt erhalten, allerdings werden Produkte mit relevantem Kaufverlauf – bei sonst gleichen Bedingungen – darüber platziert.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt731e67dfd3bd6ee2/6a17e9523e9e4582bbba14b6/80f0285bd80935703d39b7a4e1fd6094d71af0aa-545x273.jpg" alt="Ein Flussdiagramm zeigt, wie die Suche eines Nutzers nach „Orangen“ einen Anwendungsserver, eine Steuerungsebene, Abfragen des Kaufverlaufs und von Richtlinien sowie anschließend einen Produktkatalogindex durchläuft, um Produktergebnisse zu Orangen zurückzugeben." /><h3>Warum Elasticsearch bei jeder Suche abfragen?</h3><p>Der Kaufverlauf wird bei jeder Suche aus Elasticsearch abgefragt, anstatt in der Anwendungsebene zwischengespeichert zu werden. Dies ist eine bewusste Designentscheidung. Da die Abfrage die aktuelle Suchzeichenfolge mit den Produkttiteln mithilfe der Textanalyse-Pipeline von Elasticsearch abgleicht, profitiert das System von der gleichen Stemming-, Tokenisierungs- und Sprachverarbeitungsfunktion, die auch der Produktsuche selbst zugrunde liegt. Eine zwischengespeicherte In-Memory-Suche würde entweder eine erneute Implementierung dieser Analyse oder die Akzeptanz einer gröberen Übereinstimmung erfordern.</p><p>Um zu verstehen, warum diese Reihenfolge wichtig ist, betrachten wir einen Kunden, der zuvor Orangensaft gekauft hat und nun nach „Orangen“ sucht. Die Kaufverlauf-Abfrage gleicht „Orangensaft“ mit dem Suchbegriff „Orangen“ durch Textanalyse ab und berechnet einen Boost für dieses Produkt. Die Governance-Ebene hat jedoch bereits „Orangen“ auf die Kategorie „Obst und Gemüse“ beschränkt und Orangensaft vollständig herausgefiltert. Der Kaufverlauf-Boost für Orangensaft ist zwar in der Abfrage vorhanden, hat aber keine Auswirkung, da es im gesteuerten Ergebnissatz kein passendes Dokument gibt, auf das er angewendet werden könnte. Dem Kunden werden frische Orangen angezeigt, sortiert nach Relevanz und Personalisierung. Die Governance-Orientierungshilfen greifen.</p><p>Die Leistungskosten sind minimal: Der Kaufverlaufsindex ist klein (der Kaufverlauf eines Nutzers umfasst typischerweise Dutzende bis Hunderte von Dokumenten, nicht Millionen), und die Abfrage wird parallel zur Perkolator-Suche ausgeführt, sodass sie den kritischen Pfad nicht verlängert.</p><h3>Beispielanfrage für „Quellwasser“ ohne Nutzerverlauf</h3><p>Wenn ein nicht angemeldeter Nutzer oder ein Nutzer, der noch nie „Quellwasser“ gekauft hat, eine Suche durchführt, werden ihm möglicherweise Ergebnisse angezeigt, die in etwa wie folgt aussehen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt90249896bcf2b8c2/6a17e954af47b685f5cddfcf/1d03558c8f6492a0999e1ac4f1d22680c8f3a6ce-1130x1028.png" alt="Auf einer Webseite werden Suchergebnisse für „Quellwasser“ angezeigt, darunter eine Suchleiste, Kategorie- und Markenfilter sowie drei Produktlisten mit Details wie Marke, Zusammensetzung und Preis." /><h3>Beispielhafte Kaufhistorie eines Nutzers</h3><p>Eine Nutzerin namens Carol hingegen hat einen Einkaufsverlauf, die folgende Produkte enthält:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3aa784ccb0653a0d/6a17e95563baffd6b7741c8d/31c1fb789efc6cef673984e9711d571efce8ed27-661x523.png" alt="Eine digitale Schnittstelle mit dem Titel „Kaufprofil“ zeigt eine Kundin namens Carol mit zwei Kohorten und einer Liste der kürzlich gekauften Artikel, einschließlich Mengen, der letzten Kaufdaten und der seit dem jeweiligen Kauf vergangenen Zeit." /><h3>Beispielsuche nach „Quellwasser“ mit dem obigen Kaufverlauf</h3><p>Wenn Carol nach „Quellwasser“ sucht, werden ihr personalisierte Ergebnisse angezeigt, die ihre bisherigen Käufe widerspiegeln. Ein Blick auf den Kaufverlauf oben zeigt, dass sie das „kohlensäurehaltige Quellwasser“ (die grüne Flasche) etwa 40 Mal gekauft hat, zuletzt vor zwei Tagen. Wenn sie nach „Quellwasser“ sucht, wird dieses Produkt hervorgehoben, da wir wissen, dass sie es mag. Beachten Sie, dass in den nicht personalisierten Ergebnissen stattdessen das Rubicon-Quellwasser an erster Stelle stand.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf243c5ef1a1808ba/6a17e95763baff5d73741c91/6fce63ff051e345a79fef934cd6e71ba113ae585-1159x1062.png" alt="Eine Webseite zeigt Suchergebnisse für „Quellwasser“ an und listet Produktdetails, Preise und Filterkategorien für Getränke und Marken auf." /><h2>Kohortenorientierte Richtlinienaktivierung</h2><p>Der individuelle Kaufverlauf eignet sich gut für wiederkehrende Kunden mit etabliertem Verhalten. Viele Käufer sind jedoch Neukunden, anonym oder verhalten sich anders als sonst. Für diese Kunden bietet die Zugehörigkeit zu einer Kohorte eine andere Art der Personalisierung, die darauf basiert, wer der Kunde ist, und nicht darauf, wie er sich verhalten hat.</p><p>Ein veganer Kunde, der nach „Schokolade“ sucht, sollte vegane Schokolade weiter oben in den Suchergebnissen sehen. Ein Halal-bewusster Kunde, der nach „Snacks“ sucht, sollte Halal-zertifizierte Produkte gut sichtbar angezeigt bekommen. Ein gesundheitsbewusster Käufer, der nach „Joghurt“ sucht, sollte probiotische Optionen bevorzugt angezeigt bekommen.</p><h3>Kohorten als Richtlinien, nicht als Produkt-Tags</h3><p>Produkte verfügen bereits über ihre normalen Attribute, einschließlich Felder wie <code>dietary_restrictions: ["vegan"]</code> oder <code>dietary_restrictions: ["halal"]</code>. Die Frage ist, wo die Logik liegt, die die Kohorte eines Kunden mit diesen Produktattributen verbindet.</p><p>Der naive Ansatz wäre, diese Zuordnung in der Anwendungsebene oder in der Suchvorlage fest zu programmieren: Wenn der Nutzer Veganer ist, wird ein Boost für <code>dietary_restrictions: "vegan"</code> hinzugefügt. Aber es handelt sich hier um dasselbe „Spaghetti-Code“-Chaos auf Anwendungsebene, das in <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">Teil 1</a> beschrieben wurde, und es verursacht dieselben operativen Reibungsverluste: Das Hinzufügen einer neuen Kohorte oder die Änderung der Definition einer Kohorte erfordert eine Codeänderung.</p><p>Die gesteuerte Steuerungsebene behält die Kohortenlogik stattdessen in der Richtlinien-Engine bei. Eine Kohortenrichtlinie verbindet zwei Aspekte miteinander: die Zugehörigkeit eines Kunden zu einer Kohorte (zum Beispiel „vegan“) und ein Produktmerkmal (zum Beispiel <code>dietary_restrictions: “vegan”</code>). Die Richtlinie legt Folgendes fest: Wenn ein Käufer aus der veganen Zielgruppe eine Suche durchführt, sollen Produkte bevorzugt angezeigt werden, bei denen <code>dietary_restrictions</code> den Begriff „vegan“ enthält.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte15937af719dff39/6a17e95925daab370608a274/2b6fe359774bbea059aaf93f3fa4a03eb31233ea-544x290.jpg" alt="" /><p>Da die Kohortenlogik in der Richtlinien-Engine und nicht im Anwendungscode enthalten ist, bedeutet das Folgendes:</p><ul><li><p>Eine neue Kohorte kann durch die Erstellung einer neuen Richtlinie hinzugefügt werden; eine Produkt-Neuindizierung ist nicht erforderlich.</p></li><li><p>Kohorten-Richtlinien verwenden die vollständige Regel-Engine: Sie können Filter hinzufügen, Soft-Boosts anwenden, Synonyme erweitern, Abrufstrategien ändern oder jede andere Aktion einer Richtlinie vornehmen.</p></li><li><p>Das Kohortenverhalten wird über dieselbe Admin-Benutzeroberfläche verwaltet wie alle anderen Richtlinien: Ein Händler kann Kohortenrichtlinien über den unter <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Teil 2</a> beschriebenen Workflow „Erstellen → Testen → Veröffentlichen“ erstellen, testen und veröffentlichen.</p></li></ul><h3>Beispiel einer veganen Kohortenrichtlinie</h3><p>Ein Händler erstellt eine Kohortenrichtlinie mit folgenden Merkmalen:</p><ul><li><p><strong>Kohorten:</strong> <code>["vegan"]</code>.</p></li><li><p><strong>Matchkriterien:</strong> Entspricht jeder Abfrage (oder einer bestimmten Produktkategorie).</p></li></ul><p><strong>Aktion:</strong> Soft-Boost auf <code>dietary_restrictions: "vegan"</code> mit einem Boost-Gewicht von 2.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt835034b54f6790b8/6a17e95b7b54f980408b391e/fc58bbd97c0dd1fa3ce757394ca117d0789c52f6-1080x1018.png" alt="Eine Webschnittstelle mit dem Titel „Rewrite-Richtlinie bearbeiten“ zeigt Felder für die Richtlinien-ID, den Titel, die Beschreibung, die Kohortenauswahl, die Abfrageoptionen für Regeln, den Regeltyp, die Filtereinstellungen und mehr an, wobei der Fokus auf der Kohorte mit dem Begriff „vegan“ und auf dem Wert „vegan“ liegt." /><h3>So funktioniert die Kohortenaktivierung</h3><p>Jedes Richtliniendokument hat ein <code>cohorts</code>-Feld. Bei allgemeinen Richtlinien, die für alle Käufer unabhängig von der Kohorte gelten, kann dieses Feld leer gelassen werden; diesen wird intern von der Steuerungsebene der Wert <code>"_all"</code> zugewiesen. Kohortenspezifische Richtlinien speichern die Namen ihrer Zielkohorte, wie zum Beispiel <code>["vegan", "kosher", “sweet_tooth”]</code>.</p><p>Wenn eine Suchanfrage ein Nutzerprofil enthält, erstellt die Steuerungsebene einen einfachen <code>terms</code>-Filter für die Perkolator-Abfrage:</p>{ "terms": { "cohorts": ["_all", "vegan", "health_conscious"] } }<p>Dieser einzelne Filter umfasst alle allgemeinen Richtlinien sowie die kohortenspezifischen Richtlinien des Nutzers. Der <code>_all</code>-Sentinel ermöglicht einen übersichtlichen Einbeziehungsfilter: Es sind keine <code>must_not</code>- oder <code>exists</code>-Abfragen erforderlich, um den Fall zu behandeln, in dem eine Richtlinie keine Kohortenbeschränkung enthält.</p><p>Der Perkolator wertet dann wie gewohnt die Richtlinienübereinstimmungen aus. Der einzige Unterschied besteht darin, dass die Auswahl an Richtlinien auf diejenigen beschränkt wurde, die für die Zielgruppe dieses Käufers relevant sind. Alle nachfolgenden Schritte (kaskadierende Transformationen, Konfliktlösung auf Feldebene, Nachverfolgung verwendeter Phrasen) funktionieren genauso wie der in den Teilen 3 und 4 beschriebene nicht personalisierte Ablauf.</p><h3>Ergebnisse für nicht-vegane (standardmäßige) Nutzer bei der Suche nach „Schokolade“</h3><p>Wenn ein nicht-veganer Nutzer nach Schokolade sucht, wird kein veganer Kohorten-Boost auf seine Ergebnisse angewendet. Oft tauchten in den Top-Treffern nicht-vegane Schokoladen wie folgt auf:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltc5244b19c2162f5b/6a17e95d3e03d727f74f2cb6/5bade79944ef294e2cb835cfd6e3231392e8fbd0-1159x1104.png" alt="Auf einer Webseite werden Suchergebnisse für „Schokolade“ angezeigt, mit Kategorie- und Markenfiltern auf der linken Seite und drei Produktlisten für Schokolade mit Beschreibungen, Preisen und Spezifikationen." /><h3>Ergebnisse der veganen Kohortenrichtlinie bei der Suche nach „Schokolade“</h3><p>Wenn ein Käufer aus der veganen Kohorte nach „Schokolade“ sucht, wird diese Richtlinie in die Liste der in Frage kommenden Ergebnisse aufgenommen. Die Übereinstimmung ist gegeben, und die Steuerungsebene gewährt vegan-zertifizierten Schokoladenprodukten einen Soft-Boost. Der Boost wirkt sich multiplikativ aus: Vegane Schokoladen erhalten eine höhere Bewertung, doch nicht-vegane Schokoladen werden nicht vollständig ausgeschlossen, da der oben genannte Filter als <em>Soft-Boost</em> festgelegt ist, den wir in Teil 3 dieser Serie ausführlich beschrieben haben.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf73ce626bcd3d66d/6a17e95f2f4a5c5341fa8934/fc6f7ec6a9de30f3a6d8f32bb9ee7ec457dea458-1138x1255.png" alt="Auf einer Webseite werden Suchergebnisse für „Schokolade“ angezeigt, mit Kategorie- und Markenfiltern auf der linken Seite und drei Schokoladenproduktlisten mit Beschreibungen, Preisen und Spezifikationen, wobei der Fokus auf den eingekreisten veganen Kennzeichnungen liegt." /><p>Wenn der Käufer jedoch ausdrücklich nach „Hershey-Milchschokolade“ sucht, greift der Vegan-Boost zwar weiterhin, wird jedoch möglicherweise durch die stärkere Textrelevanz der Hershey-Milchschokoladenprodukte überlagert.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e7487727387e524/6a17e9617b54f965ab8b3922/f47bb8bfa58106f897c4c6c143494f4367355528-1136x1142.png" alt="Auf einer Webseite werden Suchergebnisse für „Hershey-Milchschokolade“ angezeigt, mit Kategorie- und Markenfiltern auf der linken Seite sowie drei Einträgen zu Hershey-Schokoladenprodukten mit detaillierten Beschreibungen, Preisen und Nährwertangaben." /><p>Ein Käufer außerhalb der veganen Zielgruppe, der nach der gleichen Abfrage sucht, sieht die Richtlinie für die „vegane Zielgruppe“ nie; sie ist nicht in seiner Auswahl enthalten. Die Governance-Ebene ist identisch, nur der aktive Richtliniensatz unterscheidet sich.</p><h3>Kohorten mit Kaufhistorie</h3><p>Ein veganer Kunde mit umfangreichem Kaufverlauf erhält sowohl eine speziell auf seine Kohorte zugeschnittene Richtlinienaktivierung als auch Kaufverlauf-Boosts. Bei neuen oder anonymen Kunden ermöglicht bereits die implizite Zugehörigkeit zu einer Kohorte eine aussagekräftige Personalisierung, ohne dass Verhaltensdaten erforderlich sind (wenn ein anonymer Nutzer beispielsweise ausschließlich nach veganen Produkten gesucht hat, stufen wir ihn als Mitglied der veganen Kohorte ein). Ein Kunde, der sich bei der Kontoeröffnung als Halal-bewusst identifiziert, erhält bei seiner ersten Suche sofort auf Halal zugeschnittene Ergebnisse.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt89044f002807c2e4/6a17e962af47b64034cddfd3/81af35a533a567d99324860c8e69cf9752533c8f-545x301.jpg" alt="Ein Flussdiagramm zeigt, wie eine Suche nach „Orangen“ durch einen Anwendungsserver, eine Steuerungsebene, Abfragen des Verlaufs und der Richtlinien und schließlich einen Produktindex verläuft, um Produkte mit Orangen zurückzugeben." /><h2>Wie sich Personalisierungsebenen zusammensetzen</h2><p>Die Verschachtelungsreihenfolge der <code>function_score</code>-Ebenen ist entscheidend. Vom Innersten zum Äußersten:</p><ol><li><p><strong>Basisabfrage:</strong> Das Schlüsselwort oder die semantische Übereinstimmung mit benannten Abfragen (<code>fulltext_match</code>, <code>title_phrase_match</code>).</p></li><li><p><strong>Ebene der Governance-Richtlinie:</strong> Feste Filter als <code>bool.filter</code>-Klauseln, Soft-Boosts als <code>function_score</code>-Funktionen (Teile 3 und 4).</p></li><li><p><strong>Business-Signal-Steigerungen:</strong> Margen- und Popularitätssteigerung (die wir in Teil 7 erkunden werden).</p></li><li><p><strong>Kaufverlauf-Boosts:</strong> Die äußerste <code>function_score</code>-Ebene.</p></li></ol><p>Diese Reihenfolge stellt sicher, dass die Governance die Ergebnisliste (was angezeigt wird) steuert, geschäftliche Signale das Ranking innerhalb dieser Liste anpassen (was aus Sicht des Händlers zuerst angezeigt wird) und den Kaufverlauf das Ranking auf der Grundlage des individuellen Verhaltens weiter anpasst (was aus Sicht des Käufers zuerst angezeigt wird). Jede Ebene überlagert die vorherige auf multiplikative Weise, sodass sich die Effekte verstärken, anstatt sich zu widersprechen.</p><h2>Was das operativ bedeutet</h2><p>Durch die Personalisierung über die geregelte Steuerungsebene bleiben alle in Teil 1 und 2 beschriebenen betrieblichen Eigenschaften erhalten:</p><ul><li><p><strong>Änderungen ohne Bereitstellung.</strong> Kohorten-Richtlinien werden über die Admin-Benutzeroberfläche erstellt, getestet und aktiviert. Das Hinzufügen einer neuen Ernährungkohorte oder das Anpassen einer Gewichtung erfordert weder Codeänderungen noch die Beteiligung der Entwicklungsabteilung.</p></li><li><p><strong>Prüfbarkeit.</strong> Jede Kohortenrichtlinie ist ein eigenständiges, versioniertes Dokument. Wenn ein Händler fragt: „Warum ist das Ranking für vegane Produkte für diesen Nutzer höher?“, ist die Antwort eine spezifische Richtlinie mit einer spezifischen Priorität, die im Fehlerbehebungs-Panel zusammen mit allen anderen Richtlinien angezeigt wird, die für diese Abfrage ausgelöst wurden.</p></li><li><p><strong>Konfliktlösung.</strong> Die Richtlinien für Kohorten unterliegen der gleichen Konfliktlösung pro Feld, die in Teil 3 beschrieben wurde. Wenn die Kategorie-Boost-Funktion einer Kohortenrichtlinie mit der Kategorie-Überschreibung einer Kampagnenrichtlinie in Konflikt gerät, wird der Konflikt deterministisch durch denselben Prioritäts- und Strategie-Framework gelöst; eine Sonderbehandlung ist nicht erforderlich.</p></li><li><p><strong>Messbarkeit.</strong> Da Kohorten-Richtlinien eigenständig und einzeln aktivierbar sind, lassen sich ihre Auswirkungen auf die Konversions-, Klick- und Warenkorb-Raten ebenso wie bei jeder anderen Richtlinie im System unabhängig voneinander messen.</p></li></ul><h2>Wie geht es weiter in dieser Serie?</h2><p>Im nächsten Beitrag wird eine weitere Dimension der gesteuerten Kontrollebene untersucht: wie Margen und Popularitätssteigerungen pro Anfrage durch Richtlinien angepasst werden können, wodurch die ökonomische Optimierung zu einer Governance-Entscheidung und nicht zu einer statischen Konfiguration wird.</p><p>Siehe Teil 7: Abfragegesteuerte wirtschaftliche Optimierung: Margen- und Popularitätssteigerung pro Abfrage</p><h2>Setzen Sie die reglementierte E-Commerce-Suche in die Praxis um</h2><p>Die in diesem Beitrag beschriebenen Personalisierungsmuster (Boosting des individuellen Kaufverlaufs und kohortenbasierte Richtlinienaktivierung) wurden von Elastic Services Engineering als Teil unseres wiederholbaren E-Commerce-Suchbeschleunigers konzipiert und entwickelt. Beide Mechanismen sind in die in der gesamten Reihe beschriebene verwaltete Steuerungsebenen-Architektur integriert. Wenden Sie sich an <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Nehmen Sie an der Diskussion teil</h2><p>Haben Sie Fragen zur Suchsteuerung, zu Abrufstrategien oder zur Sucharchitektur im E-Commerce? Nehmen Sie an der <a href="https://discuss.elastic.co/">Diskussion der Elastic-Community</a> teil.</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[Operativer Betrieb]]></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[Elasticsearch-Perkolator zur Steuerung der Suche im E-Commerce: Übersetzung mehrdeutiger Anfragen in kontrollierte Abrufstrategien]]></title>
    <description><![CDATA[Erfahren Sie, wie Sie den Elasticsearch-Perkolator zur Implementierung der Suchsteuerung verwenden. In diesem Blog skizzieren wir die Muster, die erforderlich sind, um eine geregelte Policy-Engine in der Produktion zu erstellen und eine kontrollierte Abrufstrategie zu entwickeln.]]></description>
    <content:encoded><![CDATA[<p>Dieser Beitrag ist ein technischer Einblick in die Elasticsearch-Implementierung der in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> beschriebenen Steuerungsebenenarchitektur und zeigt, wie sie mit dem Elasticsearch-Perkolator erstellt wird. Er skizziert die Muster, die zur Implementierung einer deterministischen, gesteuerten Richtlinien-Engine in der Produktion verwendet werden.</p><h2><strong>Von der Architektur bis zur Implementierung</strong></h2><p><a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> beschrieb die Architektur der Steuerungsebene: Reverse Matching als Suchprimitiv, Richtliniendokumente, die Treffer von Aktion trennen, und kaskadierende Transformationen, die mehrere Richtlinien zu einem einzelnen Ausführungsplan zusammensetzen. Dieser Beitrag befasst sich praktisch mit der Elasticsearch-Funktion, die die Richtlinienabfrage ermöglicht: der <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">Perkolator-Abfrage</a>.</p><p>Der Perkolator eignet sich hervorragend für die Steuerung, da er die Suchrichtung genau so umkehrt, wie es eine Steuerungsebene benötigt. Dieser Beitrag führt Schritt für Schritt durch die Implementierung, beginnend mit einer klaren Erklärung, was der Perkolator tut und warum er wichtig ist, und dann weiter durch Indexdesign, Richtlinien-Speicher, Auswertung zur Abfragezeit und die Kombination mehrerer Richtlinien.</p><h2><strong>Wie normale Suche funktioniert</strong></h2><p>Ein E-Commerce-System kann Hunderttausende oder Millionen von Produktdokumenten enthalten, die Felder wie <code>title</code>, <code>category</code> und <code>price</code> umfassen. Wenn ein Nutzer nach passenden Dokumenten sucht, fordern Sie Elasticsearch auf, die Suchfolge des Nutzers mit einem oder mehreren gespeicherten Feldern in diesen Produktdokumenten zu vergleichen. Der Standardanalysator von Elasticsearch, <a href="https://www.elastic.co/docs/reference/text-analysis/analysis-standard-analyzer">der Standardanalysator</a>, schreibt Text in Kleinbuchstaben und teilt ihn in Token auf. Eine Suche nach „orangen“ entspricht aufgrund der Kleinschreibung „Orangen“. Mit einem sprachbewussten Analysator, der Wortstämme einbezieht, wird auch „Orange“ gefunden, da beide Formen auf den gleichen Stamm zurückgehen. Beispielsweise liefert die folgende <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-match-query">Suchabfrage</a> Dokumente zurück, die im Feld <code>“title”</code> „Orange“ oder „Orangen“ enthalten.</p>POST products/_search
{
  "query": {
    "match": {
      "title": "oranges"
    }
  }
}<p>Für die obige Abfrage gibt Elasticsearch die Produktdokumente an, deren Feld <code>title</code> mit „Orangen“ übereinstimmt. Dazu gehören beispielsweise Ergebnisse wie „Orangenaufstrich“, „Orangensaft“, „Saftige Orangen“, „Orangenmarmelade“ und so weiter. Wichtig ist, dass Elasticsearch üblicherweise dazu verwendet wird, eine Suchzeichenfolge mit Dokumenten zu vergleichen und die Dokumente anzugeben, die mit der Suchzeichenfolge übereinstimmen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt806e1c8c115bc9b6/6a170dba67045b634645c266/ba758f25616f2106d245ce0d47926c174766e028-642x318.png" alt="Ein Diagramm, das eine eingehende Suchzeichenfolge mit gespeicherten Produkttiteln vergleicht und Treffer für drei Titel zeigt, die „Orange“ enthalten, und keine Treffer für zwei Titel, die dies nicht tun." /><h2><strong>Das Governance-Problem: Relevante Richtlinien finden, bevor nach Produkten gesucht wird</strong></h2><p>Wie in <a href="https://www.elastic.co/search-labs/blog/series/governed-search-patterns">Teil 1 bis 3</a> dargelegt, sendet ein gesteuertes Suchsystem die Suchzeichenfolge des Nutzers nicht direkt an den Produktkatalog. Zunächst wird geprüft, ob Richtlinien für diese Suchzeichenfolge gelten.</p><p>Ein Händler hat entschieden, dass, wenn jemand exakt nach „Orangen“ sucht, die Ergebnisse auf die Kategorie „Orangen“ beschränkt werden sollen und Orangensaft, Orangenmarmelade und Orangenlimonade ausgeschlossen werden. Diese Geschäftsentscheidung wird als Richtlinie gespeichert. Wenn ein Nutzer „Orangen“ eingibt, muss die Steuerungsebene diese Richtlinie finden, ihre Anweisungen lesen und die Suche im Produktkatalog entsprechend modifizieren. Um dies zu erreichen, muss die Steuerungsebene herausfinden, welche gespeicherten Richtlinien für diese Suchzeichenfolge relevant sind.</p><p>Ein Unternehmenssystem kann Hunderte oder Tausende solcher Richtlinien umfassen. Deren Einzelüberprüfung per Wenn/Sonst-Logik ist das Antimuster auf Anwendungsebene, das in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Teil 2</a> beschrieben wird. Was wir brauchen, ist eine Möglichkeit, all diese Richtlinien in einem Index zu speichern und sofort diejenigen zu finden, die zu einer bestimmten Suchzeichenfolge passen. Hier kommt der Perkolator ins Spiel.</p><h2><strong>Umkehr der Richtung: Der Perkolator</strong></h2><p>Wir haben bereits erwähnt, dass Elasticsearch bei einer normalen Suche üblicherweise verwendet wird, um eine Suchzeichenfolge mit Dokumenten zu vergleichen und die Dokumente zurückzugeben, die diese Suchzeichenfolge enthalten.</p><p>Der Perkolator kehrt diesen Vorgang um. Mit einem Perkolator verfügt man über einen Index, in dem jedes Dokument ein Abfragemuster speichert. Eine eingehende Suchzeichenfolge wird mit diesen gespeicherten Abfragen abgeglichen, um zu bestimmen, welches dieser gespeicherten Abfragemuster ausgelöst wurde.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1e7e2966bf46474d/6a170dbba929cf500aae0a57/1e6348531d1c0be57b385f51d248488cf58489ff-642x279.png" alt="Ein Diagramm, das mehrere gespeicherte Abfragemuster zeigt, die unabhängig von einer eingehenden Suchzeichenfolge getestet werden, wobei „Orangen“ eine Übereinstimmung ergeben und alle anderen Muster keine Übereinstimmung wiedergeben." /><p>Für die Steuerung stellen die „gespeicherten Abfragemuster“ Richtlinien dar. Jede Richtlinie enthält ein Muster, das die Art der Suchzeichenfolge beschreibt, mit der sie übereinstimmen soll. Stimmt zum Beispiel die Suchzeichenfolge genau mit „Orangen“ überein oder enthält sie „Olivenöl“? Die eingehende Zeichenfolge ist der Suchtext des Nutzers, der zum Abfragezeitpunkt eintrifft und mit allen gespeicherten Richtlinienmustern abgeglichen werden muss. Dies wird in einem <a href="https://youtu.be/Ap5K2Y00Xjc?t=246">zugehörigen PRISM-Video bei Minute 4:09</a> behandelt.</p><h2>Schritt für Schritt: Wie eine Suche nach „Orangen“ ihre Richtlinie findet</h2><h3>Die Richtlinie</h3><p>Ein Händler hat eine Richtlinie erstellt, die zutrifft, wenn ein Nutzer exakt nach „Orangen“ sucht, ohne weitere Wörter anzugeben. Sobald der Perkolator übereinstimmt, enthält der Rest des Dokuments die Regeln, die die Steuerungsebene zum Erstellen der Produktabfrage verwendet; in diesem Beispiel besteht eine der Regeln darin, die Ergebnisse auf die Kategorie „Früchte“ zu beschränken (zu filtern).</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>Das <code>percolator</code> -Feld enthält das Muster, das definiert, wann diese Richtlinie ausgelöst werden soll. In diesem Fall entspricht sie dem Ausdruck <code>"START oranges END"</code>. Die Felder <code>rule_type</code> und <code>rule_args</code> definieren, was die Richtlinie tun soll, wenn sie ausgelöst wird. Die Token <code>START</code> und <code>END</code> sind Grenzmarkierungen, die wir im Weiteren erläutern werden.</p><p>Sie können sehen, wie eine Richtlinie in der PRISM Studio-Benutzeroberfläche bei <a href="https://youtu.be/Ap5K2Y00Xjc?t=172">2:52 des zugehörigen PRISM-Videos</a> erstellt wird.</p><h3>Der Nutzer sucht</h3><p>Ein Käufer gibt „Orangen“ in die Suchleiste ein.</p><h3>Die Steuerungsebene prüft auf übereinstimmende Richtlinien</h3><p>Bevor der Produktkatalog durchsucht wird, fängt die Kontrollebene die Suchzeichenfolge des Nutzers ab, umschließt sie mit Begrenzungsmarkierungen und sendet sie an den Perkolator:</p>POST policies/_search
{
  "query": {
    "percolate": {
      "field": "percolator",
      "document": {
        "query": "START oranges END"
      }
    }
  }
}<p>Die Zeichenfolge <code>"START oranges END"</code> wird gegen alle gespeicherten Richtlinienmuster überprüft. Intern führt Elasticsearch die gespeicherten Richtlinienmuster gegen diese Zeichenfolge aus und gibt die übereinstimmenden wieder. Das ist der Perkolator. Die Suchzeichenfolge des Nutzers wurde mit allen gespeicherten Richtlinienmustern abgeglichen, und die übereinstimmenden Muster wurden angezeigt. Keine Wenn/Sonst-Ketten. Keine sequentielle Auswertung. Der Index übernimmt den Abgleich.</p><h3>Die Steuerungsebene wendet die Richtlinie an</h3><p>Die Steuerungsebene liest die Aktionen der zugeordneten Richtlinien. Die obige Richtlinie weist die Steuerungsebene an, die Ergebnisse auf die Kategorie „Früchte“ zu beschränken. Die Steuerungsebene erstellt die endgültige Elasticsearch-Abfrage für den Produktkatalog wie folgt:</p>POST products/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "title": "oranges" } }
      ],
      "filter": [
        { "terms": { "categories": ["Fruits"] } }
      ]
    }
  }
}<p>Der Nutzer suchte nach „Orangen“. Der Produktkatalog erhält eine Anfrage nach „Orangen“, die auf die Kategorie „Früchte“ beschränkt ist. Aufgrund dieser Einschränkung sind Orangensaft, Orangenmarmelade und Orangenlimonade ausgeschlossen.</p><h3>Warum „Orangenmarmelade“ nicht unter die Richtlinie „Orangen“ fällt</h3><p>Angenommen, ein anderer Nutzer sucht nach „Orangenmarmelade“. Die Steuerungsebene umschließt die Zeichenfolge und perkoliert: <code>"START orange marmalade END"</code>. Das Muster der „Orangen“-Richtlinie ist <code>match_phrase: "START oranges END"</code>. Die Richtlinie für Orangen passt nicht. Daher wird sie nicht angewendet und die Ergebnisse sind nicht auf die Kategorie „Früchte“ beschränkt.</p><p>Das ist der Zweck der Grenzmarkierungen <code>START</code> und <code>END</code>. Ohne sie könnte eine Richtlinie, die auf das Wort „Orangen“ abzielt, versehentlich bei einer Anfrage wie „Orangenmarmelade“ auslösen. Indem wir die Suchzeichenfolge des Nutzers mit <code>START</code> und <code>END</code> umschließen und diese Markierungen in das Muster der Richtlinie aufnehmen, stellen wir sicher, dass die Richtlinie nur dann ausgelöst wird, wenn die vollständige Suchzeichenfolge „Orangen“ lautet und keine weiteren Wörter enthält. Dies entspricht sowohl den Wünschen der Käufer als auch den Absichten des Händlers.</p><h2>Eine zweite Richtlinie: „Olivenöl“ in einem Wortstammfeld</h2><p>Nicht jede Richtlinie benötigt eine exakte Zeichenfolgenübereinstimmung. Die „Olivenöl“-Richtlinie findet Übereinstimmungen in einem Wortstammfeld, daher greift sie unabhängig von geringfügigen Wortformvariationen:</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>Das Muster dieser Richtlinie entspricht <code>query.stemmed</code> statt <code>query</code>. Wenn die Suchzeichenfolge des Nutzers eintrifft, wird sie sowohl in einem <code>query</code> -Feld (der exakte Text) als auch in einem <code>query.stemmed</code> -Feld gespeichert (analysiert mit einem Wortstamm-Analysator, der Wörter auf ihren Stamm reduziert, sodass „Oliven“ und „Olive“ beide auf denselben Stamm reduziert werden, ebenso wie „Öle“ und „Öl“). Das Muster der Richtlinie wird mit der Wortstammversion der Zeichenfolge überprüft und die Richtlinie damit unabhängig von geringfügigen Wortformvariationen ausgelöst.</p><p>Die <code>START</code> - und <code>END</code> -Grenzmarkierungen funktionieren auch im Wortstammfeld und stellen sicher, dass diese Richtlinie nur ausgelöst wird, wenn „Olivenöl“ die gesamte Suchzeichenfolge ist und nicht, wenn sie als Teil von etwas Längerem auftritt.</p><p>Der übrige Beitrag behandelt die Implementierungsdetails, die dies produktionsbereit machen: das Index-Mapping, das beide Abgleichmodi unterstützt, die Steuerung der Phrasenentfernung und Verfolgung bereits verarbeiteter Phrasen durch Hervorhebungen und die Kombination mehrerer widersprüchlicher Richtlinien zu einem einzigen Ausführungsplan.</p><h2><strong>Das Richtlinien-Index-Mapping</strong></h2><p>Der Richtlinienindex benötigt ein Perkolator-Feld zur Speicherung von Abfragemustern und ein Textfeld, das die Struktur der eingehenden Suchzeichenfolge widerspiegelt, mit der der Perkolator abgleicht. Das untenstehende Mapping ist aus Gründen der Übersichtlichkeit vereinfacht. Ein Produktions-Deployment ist komplexer und verwendet benutzerdefinierte Analysetools zur Handhabung von Grenzmarkierungen, den Abgleich von Variablenmustern (z. B. zur Erkennung, dass „unter 4 $“ einen Währungswert enthält) und andere Arten von Analysen.</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>Der Index wird <code>policies</code> genannt, weil jedes Dokument eine vollständige verwaltete Richtlinie darstellt, wie sie in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Teil 2</a> definiert ist. Dazu gehören Übereinstimmungskriterien, Aktion, Priorität und Metadaten. Die Felder <code>rule_type</code> und <code>rule_args</code> enthalten die Aktionskomponente der Richtlinie, die die Anweisungen enthält, die die Steuerungsebene verwendet, um die Abfrage für die Ausführung im Produktkatalog zu erstellen.</p><p>Das <code>query</code> -Feld ist die Zeichenfolge, gegen die der Perkolator abgeglichen wird. Es gibt zwei Varianten: eine exakte Version und eine Wortstammversion. Wenn die Suchzeichenfolge des Nutzers eintrifft, wird sie in dieses Feld im temporären Speicherindex eingefügt. Richtlinien, die mit <code>query</code> übereinstimmen, sehen die exakte Zeichenfolge; Richtlinien, die mit <code>query.stemmed</code> übereinstimmen, sehen die Wortstammversion.</p><h2><strong>Perkolieren mit Hervorhebungen, Filtern und Sortierungen</strong></h2><p>Die oben genannten, einfachen Beispiele zeigten minimale Perkolationsanfragen. In der Praxis fügt die Steuerungsebene Hervorhebungen hinzu, filtert deaktivierte Richtlinien und sortiert nach Priorität:</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>Die Konfiguration mit Hervorhebung verwendet <code>"query"</code> als Feldschlüssel mit <code>"query.stemmed"</code> in <code>matched_fields</code>. Dies weist den einheitlichen <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/highlighting">Highlighter</a> von Elasticsearch an, Hervorhebungen für das übergeordnete Feld <code>query</code> wiederzugeben, aber auch Übereinstimmungen aus dem Unterfeld <code>query.stemmed</code> zu berücksichtigen, wenn er bestimmt, welche Token hervorgehoben werden sollen. Auf diese Weise kann eine Richtlinie, die auf das Wortstammfeld zutrifft, trotzdem noch genaue Hervorhebungen im Originaltext erzeugen, die die Steuerungsebene für die Entfernung von Phrasen und die Nachverfolgung bereits verarbeiteter Phrasen benötigt.</p><p>Der <code>enabled: true</code> -Filter stellt sicher, dass deaktivierte Richtlinien übersprungen werden. <code>sort</code> bei der Priorität stellt sicher, dass Richtlinien mit höherer Priorität zuerst beachtet werden, sodass die Steuerungsebene sie in der richtigen Reihenfolge für kaskadierende Transformationen verarbeiten kann. Das Feld <code>highlight</code> ist die wichtigste Ergänzung; es sagt uns genau, welche Wörter in der Suchzeichenfolge des Benutzers die einzelnen Treffer ausgelöst haben.</p><p>Die Antwort auf eine Suchanfrage nach „Olivenöl“ könnte wie folgt aussehen:</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>Warum Hervorhebungen wichtig sind</strong></h2><p>Beachten Sie die Hervorhebung in der Antwort: <code>"&lt;em&gt;START olive oil END&lt;/em&gt;"</code>. Elasticsearch teilt uns genau mit, welche Wörter in der Suchzeichenfolge des Nutzers zu einer Übereinstimmung mit der Richtlinie geführt haben. Das ist nicht nur Kosmetik. Die Metadaten zur Hervorhebung steuern zwei entscheidende nachgelagerte Verhaltensweisen:</p><p><strong>Phrasenentfernung.</strong> Einige Richtlinien müssen den übereinstimmenden Text aus der Suchzeichenfolge entfernen, bevor die Produktkatalogabfrage erstellt wird. Eine Richtlinie, die beispielsweise auf das Wort „billig“ abzielt, entfernt dieses Wort und wandelt es stattdessen in einen Preisfilter um. Die Hervorhebung gibt genau an, welcher Teil der Suchzeichenfolge mit der Richtlinie übereinstimmt, so dass das System weiß, was zu entfernen ist.</p><p><strong>Verfolgung bereits verarbeiteter Phrasen.</strong> Wie in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> beschrieben, kann eine Richtlinie mit höherer Priorität Wörter entfernen, die auch von einer Richtlinie mit niedrigerer Priorität als übereinstimmend erkannt wurden, wenn mehrere Richtlinien mit derselben Suchzeichenfolge übereinstimmen. Durch den Vergleich der Hervorhebungen jeder Richtlinie mit der aktuellen (sich entwickelnden) Suchzeichenfolge kann das System erkennen, dass eine Phrase bereits verwendet wurde, und die Richtlinie mit der niedrigeren Priorität überspringen. Dies verhindert Doppelverarbeitung und gewährleistet deterministisches Verhalten.</p><p>Sie können mehr darüber erfahren, wie das Hervorheben funktioniert, in <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/how-es-highlighters-work-internally">diesem Artikel</a>.</p><h2><strong>Von der Perkolation zum Ausführungsplan</strong></h2><p>Der Perkolator gibt eine Reihe passender Richtlinien zurück. Aber wie schon in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> beschrieben: Die Suche ist nur die halbe Miete. Die andere Hälfte besteht darin, diese Übereinstimmungen zu einem kohärenten Ausführungsplan zusammenzusetzen. Und so sieht das für eine konkrete Abfrage aus.</p><h3><strong>Beispiel: „Billige Schokolade“ während einer Weihnachtskampagne</strong></h3><p>Angenommen, das System hat zwei aktive Richtlinien: die Richtlinie „Billige Schokolade“ (Priorität 210) und die Richtlinie „Weihnachtsschokolade“ (Priorität 300), die beide in <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> ausführlich beschrieben wurden.</p><p><strong>Schritt 1: Perkolieren.</strong> Der Nutzer sucht nach „billiger Schokolade“. Die Steuerungsebene umschließt die Suchzeichenfolge <code>"START cheap chocolate END"</code> und sendet sie an den Perkolator. Zwei Richtlinien stimmen überein: Das Muster der Richtlinie „Billige Schokolade“ entspricht der Phrase „billige Schokolade“; und das Muster der Richtlinie „Weihnachtsschokolade“ entspricht über das Wortstammfeld der Phrase „Schokolade“.</p><p><strong>Schritt 2: Nach Priorität sortieren.</strong> Der Perkolator gibt beide Richtlinien wieder, sortiert nach Priorität in absteigender Reihenfolge. Zuerst wird die Richtlinie „Weihnachtsschokolade“ (300) bearbeitet, danach die Richtlinie „Billige Schokolade“ (210).</p><p><strong>Schritt 3: Anwenden der kaskadierenden Transformation.</strong> Dies ist das Modell <code>initial state → [Policy A] → state' → [Policy B] → state'' → execution plan</code> aus <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a>.</p><p>Die Richtlinie „Weihnachtsschokolade“ (Priorität 300) gilt zuerst:</p><ul><li><p>Fügt einen strengen Kategorienfilter hinzu: „Weihnachtsspeisen und -getränke“, „Weihnachtssüßigkeiten“.</p></li><li><p>Fügt einen Preisfilter hinzu: weniger als 7 $.</p></li><li><p>Fügt der Kategorie einen Soft-Boost hinzu: „Adventskalender“ (3x).</p></li></ul><p>Die Richtlinie „Billige Schokolade“ (Priorität 210) gilt als Nächstes für den geänderten Zustand:</p><ul><li><p>Versuche, einen strengen Kategoriefilter hinzuzufügen: „Schokolade“, „Milchschokolade“; aber die Weihnachtsrichtlinie hat dieses Feld bereits mit <code>on_conflict: override</code> festgelegt, daher werden die „Billige Schokolade“-Kategorien verworfen.</p></li><li><p>Versuche, einen Preisfilter hinzuzufügen: 2 $, die Weihnachtsrichtlinie legt <code>on_conflict: restrict</code> für den Preis fest, und 2 $ ist restriktiver als 7 $, daher gewinnt 2 $.</p></li><li><p>Entfernt das Wort „billig“ aus der Suchzeichenfolge.</p></li></ul><p><strong>Schritt 4: Erstellen der Elasticsearch-Abfrage.</strong> Die Steuerungsebene fügt den Ausführungsplan zu einer einzigen Elasticsearch-Abfrage des Produktkatalogs zusammen:</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>Der ursprüngliche Suchbegriff lautete „billige Schokolade“. Die Abfrage, die den Produktkatalog erreicht, ist ein kontrollierter, zielorientierter Abrufplan: Das Wort „billig“ wurde verarbeitet und in eine Preisbeschränkung umgewandelt, die Ergebnisse sind auf saisonale weihnachtliche Kategorien beschränkt, Adventskalender-Produkte werden im Rang heraufgesetzt und die Preisobergrenze spiegelt den restriktiveren Wert der Richtlinie mit niedrigerer Priorität wider. Jede Transformation ist deterministisch, nachverfolgbar und erklärbar.</p><p>Einen kurzen Überblick darüber, wie diese Multiplikatoren mit dem Basis-BM25-Score interagieren, finden Sie <a href="https://youtu.be/Ap5K2Y00Xjc?t=525">ab Minute 8:45 im zugehörigen PRISM-Video</a> wo wir kurz die multiplikativen Boosts erläutern.</p><h2><strong>Warum das skaliert</strong></h2><p>Der Perkolator ist in diesem Anwendungsfall effizient, weil er asymmetrisch ist: Ein Unternehmens-E-Commerce-System kann Millionen von Produkten enthalten, aber nur Hunderte oder Tausende an Steuerungsrichtlinien. Der Perkolator vergleicht eine eingehende Suchzeichenfolge mit diesen gespeicherten Richtlinienmustern und durchsucht nicht den gesamten Produktkatalog. Die Kosten verhalten sich proportional zur Anzahl der Richtlinien, und Elasticsearch wendet interne Optimierungen an (Indexieren von Begriffen aus gespeicherten Abfragemustern, Kurzschluss von Boolescher Logik), um eine schnelle Übereinstimmung zu gewährleisten.</p><p>Das Hinzufügen einer neuen Richtlinie bedeutet lediglich das Indexieren eines neuen Dokuments. Das Deaktivieren eines Feldes ist eine Feldaktualisierung. Keine Codeänderungen, keine Deployments, keine Neustarts.</p><h2><strong>Von der Suche zur gesteuerten Abfrage</strong></h2><p>Der Perkolator liefert das schnelle Rückwärtsabgleich-Primitiv, das die Architektur der Steuerungsebene aus <a href="http://elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">Teil 3</a> im großen Maßstab in die Praxis umsetzt. Richtlinien sind Daten, die gespeichert und indexiert und dann effizient mit eingehenden Suchzeichenfolgen abgeglichen werden. Die Steuerungsebene fügt übereinstimmende Richtlinien durch die in Teil 3 beschriebene kaskadierende Transformation und Konfliktlösung pro Feld zu einem geregelten Ausführungsplan zusammen. Und die Abruf-Engine führt den festgelegten Ausführungsplan für den Produktkatalog aus.</p><p>Das Ergebnis ist ein System, bei dem ein Händler eine neue Richtlinie erstellen kann, ohne den Anwendungscode anzurühren, sie anhand repräsentativer Abfragen testen, in die Produktion übernehmen und sofort ihre Wirkung sehen kann. Der Perkolator beschleunigt die Richtliniensuche, die Steuerungsebene sorgt für eine deterministische Richtlinienkomposition, und der geregelte Workflow gewährleistet die Sicherheit des gesamten Prozesses.</p><h2><strong>Wie geht es weiter in dieser Serie?</strong></h2><p>Der nächste Beitrag in dieser Serie erweitert die kontrollierte Steuerungsebene um ein neues Gebiet. Er führt eine <strong>mehrstufige Sucharchitektur</strong> ein, die erklärt, wie man strenge, lockere und semantische Abrufe orchestrieren kann, während stabile Paginierung und Facetten erhalten bleiben.</p><h2><strong>Setzen Sie die reglementierte E-Commerce-Suche in die Praxis um</strong></h2><p>Die in diesem Beitrag beschriebene, auf dem Perkolator basierende Steuerungsebene – von Index-Mappings und Grenzmarkierungen bis hin zur durch Hervorhebungen gesteuerten Phrasenverfolgung und kaskadierender Richtlinienkomposition – wurde von Elastic Services Engineering als Teil unserer wiederholbaren E-Commerce-Suchbeschleuniger entwickelt. Jedes hier gezeigte Abfragebeispiel und jede Richtlinienstruktur stammt aus einem funktionierenden System, das gegen Unternehmensproduktkataloge validiert ist.</p><p>Wenn Sie eine kontrollierte, richtlinienbasierte Steuerungsebene auf Elasticsearch implementieren möchten, kommen Sie mit Elastic Services vielleicht schneller zum Ziel. Wenden Sie sich an <a href="https://www.elastic.co/consulting">Elastic Professional Services</a>.</p><h2>Nehmen Sie an der Diskussion teil</h2><p>Haben Sie Fragen zur Suchsteuerung, zu Abrufstrategien oder zur Sucharchitektur im E-Commerce? Nehmen Sie an der <a href="https://discuss.elastic.co/">Diskussion der Elastic-Community</a> teil.</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[Operativer Betrieb]]></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[Aufbau einer Steuerungsebene zur Kontrolle der E-Commerce-Suche]]></title>
    <description><![CDATA[Wie Sie eine kontrollierte Steuerungsebene für den elektronischen Handel aufbauen, die widersprüchliche Suchrichtlinien in einem einzigen Ausführungsplan zusammenfasst (ohne Codeänderungen).]]></description>
    <content:encoded><![CDATA[<p><a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-improve-retrieval">In Teil 1</a> und <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">Teil 2</a> dieser Serie wurde dargelegt, warum die E-Commerce-Suche eine <em>Steuerungsebene</em> benötigt, eine Entscheidungsebene zwischen der Abfrage des Benutzers und der Suchmaschine, die die Absicht klassifiziert, Einschränkungen durchsetzt und zur richtigen Suchstrategie weiterleitet (z. B. BM25, semantisch, hybrid). In diesem Beitrag wird gezeigt, wie diese Ebene mit Hilfe eines einfachen architektonischen Primitivs aufgebaut werden kann, bei dem die Richtlinien für die Abfrageinterpretation als Dokumente gespeichert und zur Abfragezeit über ein schnelles Reverse Matching abgerufen werden. Da neue Abrufrichtlinien (z. B. „Marke X fördern“ oder „nur Kategorie Y anzeigen“) keine Codeänderungen erfordern, ist das Ergebnis eine Routing-Schicht, die stabil bleibt, während sich die Richtlinien weiterentwickeln, und die die Abrufmaschinen in Umgebungen mit hohem Risiko sicher macht. Wenn Sie das Endergebnis dieser Architektur sehen möchten, bevor Sie weiterlesen, sehen Sie sich dieses Video an: <a href="https://www.youtube.com/watch?v=e1GuL9CYWAk">Fixing Search Relevance in Seconds: Introducing PRISM</a>.</p><h2>Warum die Interpretation von Abfragen oft zur Herausforderung wird</h2><p>Die Speicherung von Richtlinien als Code (if/else-Blöcke in der Anwendungsschicht) erzeugt zehntausende Zeilen fehleranfälliger Logik, die kein Indexieren für einen effizienten Richtlinienabruf zur Abfragezeit bietet. Die Iteration ist langsam (eine einzelne Änderung des Verhaltens von Abfragen kann einen sechswöchigen Deployment-Zyklus erfordern), die Verantwortlichkeit ist unklar (warum haben sich die Ergebnisse geändert?), und Geschäftsnutzer können das Suchverhalten ohne technische Einbindung nicht ändern. Dies wird auf der linken Seite des folgenden Bildes gezeigt::</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltb84f89f4d9029df7/6a170f806234e077cddb1ab6/4e2cd5244ef8b9a05af6337a4825252f321a9a43-1377x768.png" alt="Bild mit zwei Überschriften, „Richtlinien als Code“ auf der linken Seite und „Richtlinien als Daten“ auf der rechten Seite. Die linke Seite zeigt bedingte Codeblöcke, die Regeln für die Abfrageverarbeitung definieren, mit Hinweisen zum Deployment, zu Änderungszyklen und zur sequentiellen Auswertung. Die rechte Seite zeigt JSON-Richtlinienobjekte mit Titeln, Match-Begriffen, Aktionen, Filtern und Prioritäten sowie Hinweise zur Speicherung in einem Elasticsearch-Index, Aktualisierungsverhalten und indexiertem Matching." /><p>Das Speichern von Richtlinien als Daten in einem Elasticsearch-Index ist auf der rechten Seite des obigen Bildes dargestellt. Dieser Ansatz löst alle Probleme, die mit der fest codierten Abfrage-Auflösungslogik verbunden sind. Allerdings benötigen Sie dafür eine Möglichkeit, schnell zu ermitteln, welche Richtlinien mit der Nutzerabfrage übereinstimmen und wie Konflikte gelöst werden sollten. Hier kommt die kontrollierte Steuerungsebene ins Spiel.</p><h2>Muster der Steuerungsebene</h2><p>Eine kontrollierte Steuerungsebene befindet sich zwischen der rohen Nutzerabfrage und dem Elasticsearch-Abruf. Sie empfängt den Nutzertext als Eingabe und gibt einen Ausführungsplan aus, der Filter, Boosts und Entscheidungen zur Weiterleitung der Suchergebnisse enthält.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0585c90830d63d02/6a170f82964cea7a5908bc8b/5562da5de521f3c83ed55a13e9be87ca7fa70109-546x489.png" alt="Diagramm zur Veranschaulichung zweier Suchabläufe durch eine gesteuerte Kontrollebene: einer, bei dem eine Textabfrage für „Orangen“ vor der Produktsuche mit einer Kategoriebeschränkung umgeschrieben wird, und ein anderer, bei dem eine semantische Abfrage für „Geschenk für Großvater“ umgeschrieben und weitergeleitet wird, um passende Produkte aus einem Produktkatalog abzurufen." /><p>Eine Pipeline für die Steuerungsebene besteht aus:</p><ol><li><p><strong>Nutzerabfrage: </strong>Ein Nutzer gibt eine Zeichenfolge ein, wonach er sucht, zum Beispiel „Orangen“ oder „Geschenk für Opa“.</p></li><li><p><strong>Richtliniensuche: </strong>Ordnen Sie die Nutzerabfrage dem Richtlinienindex zu.</p></li><li><p><strong>Übereinstimmende Richtlinien zurückgeben:</strong> Richtlinien, die der Nutzerabfrage entsprechen, werden aus dem Richtlinienindex zurückgegeben.</p></li><li><p><strong>Richtlinienanwendung: </strong>Die Steuerungsebene analysiert diese zurückgegebenen Richtlinien und fügt übereinstimmende Richtlinien zu einem einzigen kohärenten Ausführungsplan zusammen, der Filter, Boosts, Überschreibungen und Leitplanken umfasst und die geeignete Abrufmethode anwendet (z. B. lexikalisches Abrufen, semantisches Abrufen oder einen hybriden Ansatz).</p></li><li><p><strong>Ausführung:</strong> Die modifizierte <em>intent-bewusste</em> Elasticsearch-Abfrage wird an die Anwendung weitergegeben, um sie gegen einen Produktkatalogindex auszuführen.</p></li><li><p><strong>Erklärung (optional):</strong> Zusätzlich zur Erstellung einer Abfrage, die geschäfts- und absichtsorientierte Ergebnisse liefert, bietet die Steuerungsebene eine optionale Nutzlast zur Erklärbarkeit, um zu zeigen, welche Richtlinien ausgelöst und wie sie kombiniert wurden.</p></li></ol><p>Um herauszufinden, welche Richtlinien für die Suchzeichenkette eines Nutzers angewendet werden sollten, ist ein schnelles, rückwärts abgestimmtes Primitiv erforderlich, das wir mit der <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">Perkolator-Abfrage</a> lösen. Nach dem Abrufen relevanter Richtlinien erfordert die Kombination mehrerer übereinstimmender Richtlinien zu einem einheitlichen Ausführungsplan ein Framework zur Beurteilung: Prioritäten, Konfliktstrategien, die Verfolgung verbrauchter Phrasen und kaskadierende Transformationen, die Richtlinien in einer Sequenz anstatt unabhängig voneinander anwenden. Darüber hinaus muss die am besten geeignete Abruftechnologie ausgewählt werden (zum Beispiel <a href="https://www.elastic.co/elasticon/conf/2016/sf/improved-text-scoring-with-bm25">BM25</a> für „Orangen“ versus <a href="https://www.elastic.co/docs/solutions/search/semantic-search">semantische Suche</a> für „Geschenk für Opa“).</p><h2>Richtliniensuche: Überprüfung der Abfrage vor der Produktsuche</h2><p>Wenn ein Kunde eine Abfrage eingibt, sendet ein Suchsystem mit einer kontrollierten Steuerungsebene diese Abfrage nicht direkt, um sie gegen den Produktkatalog auszuführen. Zunächst wird die Abfrage gegen eine Reihe gespeicherter Richtlinien geprüft und modifiziert, um die Absicht der Abfrage und die Geschäftsprioritäten widerzuspiegeln.</p><h3>Richtlinienstruktur</h3><p>Jede Richtlinie ist ein einfaches Dokument, das zwei Dinge definiert:</p><ul><li><p><strong>Übereinstimmungskriterien:</strong> Welcher Abfragetext dazu führen sollte, dass diese Richtlinie ausgelöst wird. Dies kann eine exakte Phrase, ein einzelnes Wort, ein Muster oder eine Kombination sein.</p></li><li><p><strong>Aktion:</strong> Was tun, wenn die Richtlinie ausgelöst wird. Dies könnte das Anwenden eines Kategorienfilters, das Ausschließen von Produkten, das Extrahieren einer Preisbeschränkung oder die Änderung der Abrufstrategie sein.</p></li></ul><p>Das System findet alle passenden Richtlinien, setzt sie zu einem Ausführungsplan zusammen und führt erst dann die Produktsuche durch. Zusammengenommen wirken die Richtlinien wie ein sachkundiger Verkäufer, der versteht, was Sie suchen, und Sie zum richtigen Regal führt.</p><h3>Das Richtlinienmuster</h3><p>In den ersten Artikeln dieser Reihe wurden Beispiele für Richtlinien in Aktion vorgestellt: „Orangen" werden auf die Kategorie Obst und Gemüse beschränkt, „ohne Erdnüsse" als Ausschluss behandelt und „Geschenk für Opa" an die semantische Suche weitergeleitet. Der architektonische Kernpunkt ist, dass in jedem Fall die Abfrage anhand gespeicherter Richtlinien überprüft wird, bevor die Produktsuche beginnt. Die Richtlinien bestimmen, welche Einschränkungen angewendet werden, welcher Text geändert und welche Abrufstrategie verwendet werden soll. Die Abfrage gegen den Produktkatalog erfolgt, nachdem die Richtlinien angewendet wurden und eine neu geschriebene Abfrage erstellt wurde.</p><h3>Warum dies schnell ist</h3><p>Ein E-Commerce-System für Unternehmen kann Millionen von Produkten enthalten, aber nur Hunderte oder Tausende von Richtlinien. Der Suchschritt nach Richtlinien durchsucht einen kleinen kuratierten Index, nicht den vollständigen Produktkatalog, und erfolgt daher schnell. Da Richtlinien als Daten in einem eigenen Index gespeichert werden, müssen Händler, die eine neue Richtlinie hinzufügen, gar nicht erst den Anwendungscode berühren, und Techniker, die für die Optimierung der Produktsuche zuständig sind, kommen nicht mit dem Richtlinienindex in Berührung. Beide Probleme entwickeln sich unabhängig voneinander.</p><p>Die obigen Beispiele beschreiben, was konzeptionell geschieht. Unter der Haube wird die Richtliniensuche mit dem <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-percolate-query">Elasticsearch-Perkolator-Abfragetyp</a> implementiert, der speziell für dieses Muster entwickelt wurde: das Abgleichen eingehender Texte mit einer Reihe gespeicherter Abfragen. <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">Teil 4</a> dieser Reihe bietet einen praktischen eingehenden Einblick in die Perkolator-Implementierung, einschließlich Index-Mappings, Grenzmarkern und von Highlights gesteuerter Phrasenverfolgung. Nachdem wir uns in Teil 4 eingehend mit dem Lookup-Mechanismus befasst haben, wollen wir uns nun der Frage zuwenden, was ein Richtliniendokument eigentlich enthält und wie die Steuerungsebene mehrere Richtlinien zu einem einzigen Ausführungsplan zusammensetzt.</p><h2>Beispielrichtlinien</h2><p>Nachdem wir nun erfahren haben, was Richtlinien konzeptionell bewirken, schauen wir uns an, was sie tatsächlich enthalten. Die beiden nachfolgenden Richtlinien wurden so gestaltet, dass sie absichtlich in Konflikt zueinander stehen. Dies soll das in den darauffolgenden Abschnitten beschriebene Konfliktlösungssystem veranschaulichen.</p><h3>Günstige Schokolade</h3><p>Die unten dargestellte Richtlinie erkennt, ob ein Nutzer eine Suchabfrage mit dem Begriff „günstige Schokolade“ gestellt hat. In diesem Fall beschränken sich die Ergebnisse auf die Kategorien „Schokolade“ und „Vollmilchschokolade“. Diese Richtlinie wendet auch einen Preisfilter von 2 $ an. Beachten Sie außerdem, dass diese Richtlinie eine Priorität von 210 hat. Darauf werden wir zurückkommen, wenn wir die Konfliktlösung genauer besprechen.</p><p>Die hier gezeigten Einstellungen für den Filtermodus und die Konfliktstrategie (hard_filter, soft_boost, restrict, override) werden im Abschnitt zur Konfliktlösung weiter unten ausführlich erläutert.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltada4d46e2ab26208/6a170f836f7f04f91f914924/bbcd66b20fc3aa861b5880ca67daf8e809698717-1002x890.png" alt="Eine Schnittstelle, die eine Regelkonfiguration mit einer Übereinstimmungsphrase für „günstige Schokolade“, Kategorie- und Preisfiltern, einem Feld zur Phrasenentfernung und Prioritätseinstellungen zeigt." /><p>Wenn die obige Richtlinie aktiviert ist, berücksichtigt eine Suche nach „günstige Schokolade“ den Preisfilter von 2 $ und beschränkt die Ergebnisse auf die Kategorien „Schokolade“ und „Milchschokolade“. Ein Beispiel für die Ergebnisse finden Sie weiter unten:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt368bdfbb9a6e5a5e/6a170f8566c4f975a1f8c10f/3f373af9a985864315d7639440a416e45a882a1b-1133x1146.png" alt="Eine Schnittstelle, die eine Regelkonfiguration mit einer Übereinstimmungsphrase für „günstige Schokolade“, Kategorie- und Preisfiltern, einem Feld zur Phrasenentfernung und Prioritätseinstellungen zeigt." /><h3>Weihnachtsschokolade</h3><p>Die unten gezeigte Richtlinie ist ein Beispiel für eine Richtlinie, die zur Weihnachtszeit angewendet werden könnte. Dieses Beispiel beschränkt die Ergebnisse auf „Weihnachtslebensmittel und -getränke“ und „Weihnachtssüßigkeiten“, hebt Produkte hervor, die auch in der Kategorie „Adventskalender“ enthalten sind, und wendet einen Preisfilter von weniger als 7 $ an, um sich auf erschwingliche saisonale Artikel zu konzentrieren. Beachten Sie außerdem, dass diese Richtlinie eine Priorität von 300 hat. Wir werden darauf zurückkommen, wenn wir die Konfliktlösung detaillierter besprechen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta3428d211f2d8304/6a170f86839dfa0049dcffb3/8f1179342d0e05cf78266d142b046021a3694368-1007x941.png" alt="Screenshot einer Elasticsearch-Regelabfrageschnittstelle, die eine match_phrase-Abfrage für „Schokolade“ zeigt, Filterregeln basierend auf Kategorien und Preis, Optionen zur Konfliktbehandlung und Einstellungen zur Regelpriorität." /><p>Wenn die oben genannte Richtlinie ohne widersprüchliche Richtlinien aktiviert ist, berücksichtigt eine Suche nach „Schokolade“ den Preisfilter von 7 $, beschränkt die Ergebnisse auf die Kategorien „Weihnachtslebensmittel und -getränke“ und „Weihnachtssüßigkeiten“ und hebt alle Produkte hervor, die mit „Adventskalender“ gekennzeichnet sind. Ein Beispiel für die Ergebnisse finden Sie weiter unten:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0e7f1fe91b2cadcd/6a170f8866c4f90b0af8c113/662b0e40cb3a9291c17816c33169e9ff5b68f98d-1129x1085.png" alt="Suchergebnisseite mit einer Suchabfrage nach „Schokolade“ mit Kategorie- und Markenfiltern auf der linken Seite und einer Liste von Schokoladen-Adventskalenderprodukten mit Bildern, Preisen, Kategorien und Beschreibungen auf der rechten Seite." /><h2>Kombination übereinstimmender Richtlinien</h2><p>Die oben beschriebene Richtliniensuche ist nur die halbe Wahrheit. Die andere Hälfte ist das, was passiert, wenn mehrere Richtlinien derselben Abfrage entsprechen.</p><p>In jeder nichttrivialen Deployment wird eine einzelne Abfrage routinemäßig mehrere Richtlinien gleichzeitig auslösen. „Günstige Schokolade“ passt zu beiden oben dargestellten Richtlinien. Jede Richtlinie ist für sich genommen richtig. Die Herausforderung besteht darin, sie zu einem einzigen, kohärenten Ausführungsplan zusammenzustellen, ohne Widersprüche, ohne Doppelzählungen und ohne dass eine Richtlinie die Arbeit einer anderen stillschweigend rückgängig macht.</p><p>Dies ist kein Nachschlageproblem; es ist ein Beurteilungsproblem. Das System muss entscheiden:</p><ul><li><p><strong>Reihenfolge der Anwendung:</strong> Wenn eine Negationsrichtlinie „ohne Erdnüsse“ aus der Abfrage entfernt, sieht die Preisrichtlinie dann noch den Originaltext oder den geänderten Text?</p></li><li><p><strong>Filterkonflikte:</strong> Wenn zwei Richtlinien unterschiedliche Preisobergrenzen festlegen, welche zählt dann? Wird der Verlierer stillschweigend fallen gelassen oder degradiert er sich sanft zu einem soft Boost?</p></li><li><p><strong>Phrasenbesitz:</strong> Wenn zwei Richtlinien auf dasselbe Wort zutreffen und die erste es bereits belegt hat, sollte die zweite dann trotzdem greifen?</p></li></ul><p>Eine naive Implementierung (Anwendung aller übereinstimmenden Richtlinien unabhängig voneinander und Zusammenführung von Ergebnissen) führt zu Fehlern, sobald Richtlinien interagieren. Die Architektur benötigt ein explizites Modell dafür, wie sich Richtlinien zusammensetzen. In den nächsten beiden Abschnitten wird dieses Modell beschrieben: ein Framework zur Prioritätensetzung und Konfliktlösung sowie ein kaskadierendes Transformationsmodell, das die Interaktion zwischen Richtlinien deterministisch gestaltet.</p><p>Die zentrale Erkenntnis ist, dass die Anwendung von Richtlinien keine Reihe unabhängiger Abläufe darstellt, sondern eine kaskadierende Transformation. Jede Richtlinie erhält den von allen Richtlinien mit höherer Priorität erzeugten Rewrite-Zustand und transformiert ihn weiter:</p><p>Anfangszustand → [Richtlinie A] → Zustand' → [Richtlinie B] → Zustand'' → ... → Ausführungsplan</p><p>Der Zustand enthält den umgeschriebenen Abfragetext, akkumulierte Filter, die aktuelle Absicht und alle Synonym-Erweiterungen. Eine hochprioritäre Richtlinie kann Text aus der Abfrage entfernen, und jede nachfolgende Richtlinie sieht die geänderte Abfrage, nicht die ursprüngliche. Kontext wird akkumuliert. Die Reihenfolge ist wichtig.</p><h2>Priorität und Konfliktlösung: Der Determinismus zählt</h2><p>Die konkreten Konfliktstrategien sind eine bewusste Gestaltungsentscheidung. Einzelne Unternehmen können Konflikte unterschiedlich lösen, abhängig von ihren geschäftlichen Anforderungen. Der folgende Ansatz veranschaulicht die Art des Beurteilungs-Frameworks, die eine Steuerungsebene benötigt. Wichtig sind nicht diese spezifischen Strategien, sondern dass das System explizite, deterministische Strategien enthält, anstatt Konflikte durch unvorhersehbare Interaktionen lösen zu lassen.</p><h3>Prioritätsreihenfolge</h3><p>Die Richtlinien sind nach Priorität sortiert (höchste zuerst). Wenn mehrere Richtlinien mit derselben Abfrage übereinstimmen, werden sie in Prioritätsreihenfolge angewendet. Wenn zwei Richtlinien versuchen, dasselbe Filterfeld festzulegen, hat die deklarierte Strategie der Richtlinie mit höherer Priorität für dieses Feld Vorrang. Wenn mehrere Richtlinien ausgelöst werden, die dieselbe Priorität haben, erhält die Richtlinie mit der höchsten ID Vorrang (als ob ihr eine höhere Priorität zugewiesen wäre); diese Wahl sorgt für deterministisches Verhalten, wenn Konflikte auftreten.</p><h3>Auflösung pro Feld, nicht pro Richtlinie</h3><p>Ein kritisches Designprinzip: Die Konfliktlösung erfolgt pro Feld (zum Beispiel Marke, Kategorie oder Beschreibung), nicht pro Richtlinie. Wenn zwei Richtlinien Filter erzeugen, die sich bei bestimmten Feldern überschneiden, sind nur diese spezifischen Felder von der Konfliktlösungsstrategie betroffen, und die Auflösungsstrategie wird durch die übereinstimmende Richtlinie mit der höchsten Priorität bestimmt. Nicht kollidierende Felder aus beiden Richtlinien bleiben erhalten.</p><p>Dies ist wichtig, weil die Alternative eines richtlinienbasierten Ansatzes das System dazu zwingen würde, eine gesamte Richtlinie entweder zu akzeptieren oder abzulehnen, wenn nur ein Konflikt zwischen den Feldern besteht.</p><p>Bei der Auflösung pro Feld bleibt die maximale Menge an nützlichen Einschränkungsinformationen erhalten.</p><h3>Drei Einstellungen pro Filterfeld</h3><p>Jedes Filterfeld in einer Richtlinie hat drei unabhängige Einstellungen:</p><p><strong>Filtermodus:</strong> Wie der Filter angewendet wird, wenn es keinen Konflikt gibt.</p><ul><li><p><code>hard_filter</code> (Standard): Wird als <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> Klausel angewendet. Dies ist nützlich, um nicht verwandte Produkte vollständig auszuschließen. Wenn man beispielsweise die Suche nach „Orangen“ auf die Kategorie Obst und Gemüse beschränkt, werden Treffer wie Orangensaft und Orangenmarmelade ausgeschlossen. Nicht übereinstimmende Dokumente werden vollständig aus den Ergebnissen ausgeschlossen.</p></li><li><p><code>soft_boost</code>: Wird als <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-function-score-query">Elasticsearch </a><a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-function-score-query"><code>function_score</code></a>-Gewichtung mit einer konfigurierbaren <code>boost_weight</code> angewendet. Übereinstimmende Dokumente erhalten einen Ranking-Boost, aber nicht übereinstimmende Dokumente werden nicht ausgeschlossen. Das ist nützlich, um zum Beispiel eine Marke zu stärken, ohne andere Marken auszuschließen.</p></li></ul><h3>Konfliktstrategie</h3><p>Was passiert, wenn eine Richtlinie mit niedrigerer Priorität dasselbe Feld festlegt:</p><ul><li><p><code>override</code>: Der Wert dieser Richtlinie mit hoher Priorität gewinnt; der Wert mit niedrigerer Priorität wird vollständig ignoriert. Gültig für alle Feldtypen.</p></li><li><p><code>restrict</code>: Nehmen Sie den restriktiveren numerischen Wert (zum Beispiel die niedrigere Obergrenze für Preis__max, the higher floor for price__min). Gilt nur für numerische Bereichsfelder.</p></li><li><p><code>merge</code>: Kombinieren Sie beide Werte in eine Vereinigung. Gültig nur für nicht-numerische Felder.</p></li><li><p><code>soft_boost</code>: Konvertieren Sie den konfliktierenden Filter in ein <code>function_score</code>-Gewicht mit einer konfigurierbaren <code>boost_weight</code> anstelle eines festen Filters. Weitere Details zum Function_score-Boosting finden Sie unter <a href="https://www.elastic.co/search-labs/blog/bm25-ranking-multiplicative-boosting-elasticsearch">„Beeinflussung des BM25-Rankings mit multiplikativem Boosting in Elasticsearch“</a>. Dies gilt nur für Nicht-Negationsfelder.</p></li></ul><p><strong>Wert:</strong> Der tatsächliche Filterwert (z. B. eine Kategorienliste, ein Preisschwellenwert).</p><p><strong>Strategien nach Feldtyp: </strong>Nicht alle Strategien sind für alle Feldtypen sinnvoll. Zum Beispiel ist eine Ausschlussregel von Natur aus binär, daher kann sie keinen soft Boost erhalten. Die folgende Tabelle zeigt, welche Strategien für einzelne Feldtypen verfügbar sind:</p><p>Feldtyp</p><p>Verfügbare Strategien</p><p>Standard</p><p>Negationsfelder (__not, __match__not)</p><p>überschreiben, zusammenführen</p><p>Überschreiben</p><p>Numerische Bereichsfelder (__max, __min., __gt, __lt.)</p><p>einschränken, überschreiben, Soft-Boost</p><p>einschränken</p><p>Alle anderen Felder (Schlüsselwort, Text)</p><p>soft_boost, override, merge</p><p>soft_boost</p><p>Negationsfelder können nicht soft-geboostet werden, da die Ausschlüsse binär sind. Die Umwandlung von „zeige niemals Konserven“ in „ziehe Nicht-Konserven vor“ ändert die Semantik grundlegend. Ein Produkt aus „Konserven“ würde immer noch erscheinen, nur etwas niedriger eingestuft, was den Zweck des Ausschlusses unterläuft.</p><h2>Ein konkretes Beispiel: Die Suche nach „günstiger Schokolade“ während einer Weihnachtskampagne</h2><p>Angenommen, ein Händler hat die beiden zuvor demonstrierten Richtlinien für Schokolade erstellt, eine mit niedrigerer Priorität für günstige Schokolade und eine andere, höher priorisierte schokoladenbezogene Richtlinie, die während der Weihnachtszeit aktiviert wird. Wenn beide dieser Richtlinien aktiviert sind, hängt ihre Kombination vom Filtermodus und der Konfliktstrategie der Richtlinie mit höherer Priorität ab. Wenn beide zuvor besprochenen Richtlinien aktiviert sind, werden sie wie folgt kombiniert:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf930b42611a6126c/6a170f8aacf088ae28be9c1b/0405e193522172bde283180df96ed3651178fafc-529x447.png" alt="Screenshot, der eine Transformations-Pipeline zeigt, bei der eine anfängliche Abfrage „günstige Schokolade“ durch mehrere Regeln modifiziert wird, einschließlich hinzugefügter Kategorie- und Preisfilter, Konfliktlösungsverhalten, Regelprioritäten und einer endgültigen transformierten Abfrage von „Schokolade“." /><p>Dies zeigt zwei Konflikte, eine bei den Kategorien und eine beim Preis. Es sollte erwähnt werden, dass die Abfrage, die nach dieser Transformation ausgeführt wird, folgende Eigenschaften aufweist:</p><ul><li><p>Es werden nur Produkte aus den Kategorien „Weihnachtslebensmittel und -getränke“ und „Weihnachtssüßigkeiten“ angezeigt.</p></li><li><p>Innerhalb dieser Kategorien werden Produkte, die auch mit der Kategorie „Adventskalender“ gekennzeichnet sind, um das Dreifache aufgewertet.</p></li><li><p>Ein Preisfilter für 2 $ wird angewendet. Er stammt aus der Richtlinie mit niedrigerer Priorität (weil die Richtlinie mit höherer Priorität bei Konflikten „Restrict“ festlegt).</p></li><li><p>Das Wort „günstig“ wird entfernt und es werden nur Produkte zurückgegeben, die „Schokolade“ entsprechen.</p></li></ul><p>Wenn diese beiden Richtlinien aktiviert sind, gibt „billige Schokolade“ Ergebnisse zurück, die der Abbildung unten ähneln:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt7e3c2ee36f963e8c/6a170f8ccdacbf5be17d2ac2/01bbab1c5bd3d0fd37e39c25973d60141f9796e9-1126x1123.png" alt="Suchergebnisseite, die eine Suche nach „günstiger Schokolade“ zeigt, mit Kategorie- und Markenfiltern auf der linken Seite und einer Liste von Schokoladen-Adventskalenderprodukten mit Bildern, Preisen und Produktdetails auf der rechten Seite." /><h3>Einschränkungen lockern</h3><p>Vielleicht möchte der Einzelhändler keine Produkte in den Kategorien „Schokolade“ und „Milchschokolade“ während der Weihnachtszeit ausschließen. Die Einstellungen der Weihnachtsrichtlinie könnten zu weit gefasst sein und versehentlich Kategorien entfernt haben, die von der Richtlinie für „günstige Schokolade“ abgedeckt werden. Dies ist ein Beispiel, das zeigt, warum es unter Umständen wünschenswerter sein kann, Richtlinien mit niedrigerer Priorität mit sich widersprechenden Richtlinien mit höherer Priorität zu kombinieren. Wir könnten beispielsweise die Weihnachtsschokoladen-Aktion so modifizieren, dass wir bei Konflikten nicht „Überschreiben“, sondern einen soft Boost durchführen. Die Änderung dieser Richtlinie würde wie folgt aussehen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbb7393566aeab705/6a170f8db0367d5b6472bde2/45e88311014d67933ca8cf8381d8f91de090e2b4-1090x103.png" alt="Benutzeroberfläche, die eine Suchrichtlinienregel anzeigt, wobei das Feld auf Kategorien, der Operator auf Gleich, die Werte „Weihnachtslebensmittel und -getränke“ und „Weihnachtssüßigkeiten“ eingestellt sind, die Konfliktbehandlung auf Soft mit Priorität 1 und der Filtermodus auf Hard-Filter eingestellt ist." /><p>Nach dieser Modifikation sieht die Ausführung der Transformationspipeline zur Abfrageumschreibung für „günstige Schokolade“ wie folgt aus:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6b4453b35b5f8ef0/6a170f8fb339d5ba9b76a09a/396b360e48327421c2c38bcf4a039fb1a6d5a8e0-519x445.png" alt="Screenshot einer Transformationspipeline, die zeigt, wie die Ausgangsabfrage „günstige Schokolade“ durch mehrere Regeln modifiziert wird, darunter Kategoriefilter, Preislimits, Soft-Boost- und Hard-Filter-Modi, Ergebnisse der Konfliktbehandlung, Regelprioritäten und eine endgültige Abfrage von „Schokolade“." /><p>Mit dem soft Boost bei Konflikten werden die miteinander in Konflikt stehenden Filter in softe Boosts umgewandelt, anstatt weggelassen zu werden. Die Abfrage, die nach dieser Umwandlung im Produktkatalog ausgeführt wird, hat die folgenden Eigenschaften:</p><ul><li><p>Weil „Bei Konflikt“ als „soft Boost“ in der höher priorisierten Richtlinie angegeben ist, werden die Konflikte wie folgt in Boosts umgewandelt:</p><ul><li><p>Produkte aus den Kategorien „Weihnachtslebensmittel und -getränke“ und „Weihnachtssüßigkeiten“ erhalten einen einfachen Boost.</p></li><li><p>Produkte aus den Kategorien „Schokolade“ und „Milchschokolade“ erhalten einen dreifachen Boost.</p></li></ul></li><li><p>Wie im vorherigen Beispiel, bei dem die Produkte auch als zur Kategorie „Adventskalender“ gehörig markiert sind, erhalten sie einen dreifachen Boost.</p></li><li><p>Wie im vorherigen Beispiel wird ein Preisfilter für 2 $ angewendet.</p></li><li><p>Das Wort „günstig“ wird entfernt und es werden nur Produkte zurückgegeben, die „Schokolade“ entsprechen.</p></li></ul><p>Bei weniger strenger Filterung sehen die Ergebnisse wie folgt aus:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt0288336675c509ef/6a170f917d8d6723bc70e808/7a68c54d878dadfe8b1821dd3860b7b60f9ce45f-1126x1123.png" alt="Suchergebnisseite für die Suchabfrage „günstige Schokolade“, die links Kategorie- und Markenfilter und rechts eine Produktliste anzeigt, mit mehreren Schokoladenartikeln, Preisen, Kategorien und insgesamt 6.895 Ergebnissen oben." /><h3>Preisüberschreibung einer Richtlinie mit hoher Priorität</h3><p>Vielleicht möchte der Händler zu Weihnachten auch etwas teurere Schokoladenprodukte anzeigen, indem der Preis auf 7 $ erhöht wird. Um sicherzustellen, dass der Maximalpreis aus der Weihnachtsschokoladen-Richtlinie nicht überschrieben wird, wenn jemand nach „günstiger Schokolade“ sucht, können wir den Konfliktmodus des Preises folgendermaßen auf „überschreiben“ statt auf „einschränken“ setzen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltae1b40d312cf59e6/6a170f92cdacbfa1277d2ac6/c2621e6513281f545b84eb77362f2b93e1c46a1f-996x70.png" alt="Benutzeroberfläche, die eine Suchrichtlinienregel anzeigt, wobei das Feld auf Preis, der Operator auf Kleiner als, der Wert auf 7, die Konfliktbehandlung auf Überschreiben und der Filtermodus auf Harter Filter eingestellt ist." /><p>Mit dieser Überschreibung ignoriert die Abfrage für „billige Schokolade“ den in der „billigen Schokoladenrichtlinie“ definierten Höchstpreis und wendet nur den in der „Weihnachtsschokoladenrichtlinie“ festgelegten Preis an, wie folgt:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4a47aa71c925b4a3/6a170f94ab7f0863d3db9f6d/d50da7900beb3c08439e9fd79cbe2ddd98196441-511x389.png" alt="Screenshot einer Transformationspipeline, die detailliert zeigt, wie die anfängliche Abfrage „günstige Schokolade“ durch zwei Filterregeln verarbeitet wird, mit hinzugefügten Kategorie- und Preisfiltern, harten Filter- und weichen Boost-Modi, Konfliktlösungsergebnissen, Regelprioritäten und der Entfernung eines Preisfilters aufgrund eines Konflikts." /><p>Dies ähnelt dem vorherigen Beispiel, mit dem Unterschied, dass der Höchstpreis auf den Wert von 7 $ aus der Richtlinie mit höherer Priorität festgelegt ist, weil in dieser Richtlinie „Überschreiben“ bei Konflikt angegeben wurde. Wenn der Weihnachtspreisfilter Vorrang hat, sehen die Ergebnisse wie folgt aus:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt2b9ac1a62437c967/6a170f96839dfa3f58dcffb9/635ee6353ba84727486e7e053764788fb26b6f44-1134x1079.png" alt="Suchergebnisseite für die Abfrage „günstige Schokolade“, die links Kategorie- und Markenfilter und rechts eine Liste von Schokoladenprodukten anzeigt, darunter mehrere Adventskalender mit Bildern, Preisen, Kategorien und insgesamt 10.000 angezeigten Ergebnissen." /><p>Diese drei Varianten (override, soft_boost und override on price) zeigen eine zentrale Eigenschaft des Systems: Ein Merchandiser kann die Interaktion zweier Richtlinien ändern, indem er eine Einstellung in einem einzelnen Feld innerhalb einer einzelnen Richtlinie ändert, ohne Code bereitzustellen. Die Konfliktstrategie ist der Hebel, der das Geschäftsverhalten steuert.</p><h2>Verfolgung verwendeter Phrasen</h2><p>Es gibt eine subtilere Form des Konflikts: zwei Richtlinien, die auf dieselbe Phrase zutreffen. Wenn eine Richtlinie mit höherer Priorität „ohne Erdnüsse“ aus der Abfrage entfernt, hat eine Richtlinie mit niedrigerer Priorität, die ebenfalls auf „ohne“ zutrifft, nichts mehr, worauf sie wirken kann. Das System erkennt, ob die übereinstimmende Phrase nicht mehr in der umgeschriebenen Abfrage vorhanden ist, und überspringt die Richtlinie mit niedrigerer Priorität.</p><p>Intent-Richtlinien sind von der Verfolgung verbrauchter Phrasen ausgenommen: Sie legen die Abrufstrategie basierend auf der ursprünglichen Abfrageübereinstimmung fest, unabhängig davon, welcher Text durch Richtlinien mit höherer Priorität entfernt wurde.</p><p>Gemeinsam verleihen Prioritätsordnung, feldbasierte Konfliktlösung und die Verfolgung verbrauchter Phrasen der Steuerungsebene ein deterministisches Kompositionsmodell. Auf dieser Grundlage kann das System eine Routing-Entscheidung treffen, die ohne sie riskant wäre.</p><h2>Governance macht die Abrufstrategie sicher</h2><p>Eine wichtige Erkenntnis bezüglich des Routings zur richtigen Abrufmethode (textuell, semantisch oder hybrid) ist, dass sie nach der Governance ausführen wird. Wenn Ihre Richtlinien bereits die „Produktkategorie“ durchgesetzt haben, ist der semantische Abruf wesentlich weniger riskant, da die Kandidatenmenge eingeschränkt ist. Eine semantische Suche mit über 500 Produktartikeln ist eine ganz andere Sache als eine semantische Suche über 500.000 SKUs. Die Governance schränkt den Explosionsradius ein, bevor der Abruf beginnt.</p><p>Ohne entsprechende Steuerung könnte beispielsweise eine semantische Abfrage nach „Obst mit hohem Vitamin-C-Gehalt unter 4 $“ neben Obst auch Vitaminpräparate, Karotten und grüne Paprika zurückgeben. Die Steuerungsebene stellt sicher, dass diese unerwünschten Ergebnisse nicht einmal als Teil der semantischen Erweiterung in Betracht gezogen werden.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdaa3ff1bb3afaa36/6a170f97acf088954bbe9c1f/6dccd5b8a94bfa81f68e3d1c4ad8929ce8cc4e5e-990x378.png" alt="Diagramm, das den Ablauf einer Suchabfrage vom Nutzer über einen Anwendungsserver und eine Steuerungsebene zeigt, wo Übereinstimmungsregeln nachgeschlagen, die Abfrage mit semantischer Absicht einschließlich Kategorie- und Preisbeschränkungen umgeschrieben und Ergebnisse aus einem Produktkatalog abgerufen werden, wobei nicht übereinstimmende Produkte ausgeschlossen werden." /><p>Mit dieser Einschränkung wendet die Steuerungsebene pragmatische Routing-Logik an:</p><ul><li><p><strong>Lexikalisch</strong> für Navigations- und Hauptabfragen, bei denen deterministische Präzision zählt.</p></li><li><p><strong>Semantisch</strong> für beschreibende Discovery-Abfragen, bei denen ein Konzeptabgleich hilft.</p></li><li><p>Selektiv <strong>hybrid</strong>, wenn Beschränkungen bereits durchgesetzt wurden und das Unternehmen einen umfassenderen Abruf akzeptiert.</p></li></ul><h2>Von der Architektur bis zur Implementierung</h2><p>Die kontrollierte Steuerungsebene übersetzt die Geschäftsabsicht in deterministische, zusammensetzbare Ausführungspläne, ohne diese Logik in den Anwendungscode einzubetten. Richtlinien sind Daten: Sie werden zur Abfragezeit abgeglichen, durch explizite Konfliktstrategien pro Feld aufgelöst und als kaskadierende Transformationen angewendet, die erklärbare Ergebnisse liefern. Elastic Services Engineering hat diese Architektur für E-Commerce-Teams in Unternehmen entwickelt und implementiert, wobei wiederholbare Muster und Beschleuniger verwendet wurden, die den Weg vom Konzept zur Produktion komprimieren. Eine Demo unserer Implementierung einer Steuerungsebene können Sie auf YouTube unter folgendem Link ansehen: <a href="https://www.youtube.com/watch?v=e1GuL9CYWAk">Fixing Search Relevance in Seconds: Introducing PRISM</a>.</p><h3><strong>Wie geht es weiter in dieser Serie?</strong></h3><p>Der nächste Beitrag geht praktisch auf die Implementierung ein: wie der Elasticsearch-Perkolator die Richtliniensuche beschleunigt, einschließlich Index-Mappings, Grenzmarkern, von Highlights gesteuerter Phrasenverfolgung und konkreter Abfragebeispiele.</p><h2>Setzen Sie die reglementierte E-Commerce-Suche in die Praxis um</h2><p>Die in diesem Beitrag beschriebene Architektur der Steuerungsebene (Konfliktlösung pro Feld, kaskadierende Richtlinien-Transformationen und durch Governance beschränktes Retrieval-Routing) wurde von Elastic Services Engineering entworfen und entwickelt. Jedes Muster, jeder Screenshot und jede Transformationspipeline, die in dieser Serie gezeigt wird, stammt aus einem funktionierenden System, das von Elastic Services Engineering entwickelt und anhand von Produktkatalogen im Unternehmensmaßstab validiert wurde.</p><p>Wenn Sie eine kontrollierte, richtliniengesteuerte Steuerungsebene in Elasticsearch implementieren möchten, kann <a href="https://www.elastic.co/consulting">Elastic Services</a> Sie schneller dorthin bringen.</p><h2>Nehmen Sie an der Diskussion teil</h2><p>Haben Sie Fragen zur Suchsteuerung, zu Abrufstrategien oder zur Sucharchitektur im E-Commerce? Nehmen Sie an der <a href="https://discuss.elastic.co/">Diskussion der Elastic-Community</a> teil.</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[Operativer Betrieb]]></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[Warum die E-Commerce-Suche Governance benötigt]]></title>
    <description><![CDATA[Erfahren Sie, warum E-Commerce-Suche ohne Governance unzureichend ist und wie eine Kontrollschicht vorhersehbare und absichtsgesteuerte Ergebnisse gewährleistet und damit die Suche verbessert.]]></description>
    <content:encoded><![CDATA[<p>E-Commerce-Händler müssen verschiedene grundlegend unterschiedliche Abfragetypen innerhalb desselben Systems handhaben. Ein Kunde, der nach „Orangen“ sucht, erwartet die Frucht selbst, nicht Produkte, die das Wort „Orange“ enthalten, wie Orangensaft oder Orangenmarmelade, und auch nicht semantisch verwandte Zitrusprodukte. Ein Käufer, der nach einem „Geschenk für Opa, der gerne Süßes mag“ sucht, benötigt semantische Erkennung, nicht die wörtliche Übereinstimmung mit Schlüsselwörtern.</p><p>Die <em>lexikalische Suche</em> (Textabgleich), die <em>semantische Suche</em> (Abgleich von Konzepten) und die <em>hybride Suche</em> (Kombination lexikalischer und semantischer Signale) lösen diese Probleme für sich genommen nicht. Bei der lexikalischen Suche werden möglicherweise alle Ergebnisse angezeigt, die das Wort „Orangen“ enthalten, während sich die rein semantische Suche bei einer Suchanfrage mit hoher Intentionsstärke wie „Orangen“ auf verwandte Begriffe wie Zitronen oder Grapefruits ausweiten kann. Die hybride Abfrage kombiniert diese lexikalischen und semantischen Signale, kann jedoch nach wie vor nicht entscheiden, ob diese Abfrage als navigatorisch zu behandeln ist, welche Einschränkungen durchgesetzt werden sollten oder welche geschäftlichen Richtlinien gelten sollten. Das Problem liegt nicht in der Abruftechnologie selbst, sondern im Fehlen einer Steuerungsebene, die erkennt, um welche Art von Abfrage es sich handelt und welche Einschränkungen vor Beginn des Abrufs durchgesetzt werden müssen.</p><p>In diesem Blogbeitrag befassen wir uns mit der Steuerung der E-Commerce-Suche, ihrer Bedeutung und der Frage, wie eine Kontrollschicht für vorhersehbare und präzise Suchergebnisse sorgt.</p><h2>Was Governance in der E-Commerce-Suche bedeutet</h2><p><em>Governance</em> bedeutet in diesem Zusammenhang, eine Entscheidungsebene zwischen der Abfrage des Nutzers und der Abruf-Engine einzuführen. Diese Ebene erfüllt die folgenden Funktionen:</p><ul><li><p>Klassifiziert die Suchabsicht: Handelt es sich um eine Navigation („Orangen“) oder um eine Suche („Geschenk für Opa“)?</p></li><li><p>Wendet geschäftliche Vorgaben an: Welche Kategoriegrenzen, Zulassungsregeln, Verfügbarkeitsbeschränkungen oder Merchandising-Richtlinien gelten?</p></li><li><p>Wege zur geeigneten Strategie: Sollte hierbei lexikalisches Abrufen, semantisches Abrufen oder ein hybrider Ansatz zum Einsatz kommen?</p></li></ul><p>Eine Governance-Ebene legt fest, welcher Abrufansatz für jede Abfrage verwendet werden soll, welche Einschränkungen durchgesetzt werden müssen und welche Geschäftsrichtlinien vor Beginn des Abrufs gelten sollen. Es ist wichtig, Governance nicht mit dem hybriden Abruf zu verwechseln: Der hybride Abruf ist eine Abrufstrategie, die lexikalische und semantische Signale kombiniert, während Governance die vorgelagerte Entscheidungsebene ist, die bestimmt, ob lexikalische, semantische oder hybride Signale verwendet werden sollen.</p><h2>Der Status quo: Die „Spaghetti“-Implementierung auf Anwendungsebene</h2><p>Derzeit versuchen viele Händler, dieses Problem zu lösen, indem sie die Logik direkt in die Anwendungsschicht integrieren. Dies führt oft zu <em>Spaghetti-Code</em>, also zu Tausenden von Zeilen fest codierter if-then-Anweisungen, Regex und komplexen Suchvorlagen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltdd7b33454d925cfd/6a1710f1e8fbce25ee39fd4d/f532b099ee103458e15563a711dae92952f8df02-1024x765.png" alt="Vergleich zwischen fest programmierter Anwendungslogik und Elasticsearch, der zeigt, wie Elasticsearch Ranking und Suche ohne komplexe Wenn-dann-Regeln vereinfacht." /><p>Dieser Ansatz kann die oben gezeigten gewünschten Suchergebnisse liefern; jedoch verursacht er erhebliche betriebliche Reibungsverluste:</p><ul><li><p><strong>Abhängigkeit von der Entwicklungsabteilung:</strong> Geschäfts-Nutzer und Merchandiser können das Suchverhalten nicht ohne Entwicklungs-Tickets und lange Deployment-Zyklen ändern, die oft mehrere Wochen dauern.</p></li><li><p><strong>Fragmentierung:</strong> Die Suchlogik verteilt sich auf den Anwendungscode und die Suchvorlagen, ist schwer zu erklären oder zu überprüfen und birgt daher Risiken bei der Weiterentwicklung.</p></li></ul><p>Selbst wenn Teams die Notwendigkeit des Routings erkennen, konzentriert sich die Debatte oft auf die falsche Frage: welche Abrufmethode gewählt werden soll.</p><h2>Die falsche Wahl: Lexikalisch vs. semantisch vs. hybrid</h2><p>Suchteams betrachten diese Herausforderung häufig als eine Frage der Wahl der Abrufstrategie: lexikalisch/BM25 versus semantisch/Vektoren versus hybrid. Diese Sichtweise ist zwar nachvollziehbar (die Abrufmethoden spielen eine Rolle), lässt jedoch die häufigste Fehlerquelle in realen Implementierungen außer Acht: Die Verwendung eines einzigen Abrufansatzes für alle Abfragen führt zu suboptimalen Ergebnissen.</p><p>Commerce Search ist eine Mischung aus grundlegend verschiedenen Absichten:</p><ul><li><p><strong>Deterministische Navigation mit hoher Absicht</strong> („Orangen“, „Milch“, „Schokolade ohne Erdnüsse“, „billiges Olivenöl“).</p></li><li><p><strong>Explorative Suche</strong> („Jacke zum Wandern in den Bergen“, „Geschenk für ein 12‑jähriges Kind, das Robotik mag“).</p></li><li><p><strong>Betriebliche Einschränkungen</strong> (Verfügbarkeit, Größe, Preis, Farbe).</p></li><li><p><strong>Merchandising und Kampagnen</strong> (Boost, Begraben, saisonale Kampagnen).</p></li></ul><p>Wenn das System all diese Vorgänge über dieselbe Abrufstrategie abwickelt, sind die Ergebnisse oft auf vorhersehbare Weise systematisch fehlerhaft, da es dem Betriebsmodell an Governance mangelt. Wenn Teams dies nicht als Lücke in der Unternehmensführung erkennen, reagieren sie mit dem einzigen Mittel, das ihnen zur Verfügung steht: noch mehr Feinabstimmung.</p><h2>Warum „Relevanzoptimierung“ zyklisch werden kann.</h2><p>Ohne eine Routing-Schicht verwandelt sich „Relevanz“ oft in einen nie endenden Rückstand:</p><ul><li><p>Warum zeigt diese Abfrage Zubehör über dem Kernprodukt an?</p></li><li><p>Warum hat diese Kopfabfrage plötzlich verwandte Ergebnisse angezeigt?</p></li><li><p>Warum änderten sich die Ergebnisse, nachdem wir Synonyme hinzugefügt, Analysatoren angepasst oder Hybrid aktiviert hatten?</p></li><li><p>Warum benötigt das Business-Team ein Engineering-Release, um eine einzelne Abfrage zu beheben?</p></li></ul><p>Die Teams reagieren mit weiteren Optimierungen: mehr Synonyme, mehr Boosts, mehr Experimente zur Neugewichtung, mehr Ausnahmen im Anwendungscode. Dies kann eine Zeit lang funktionieren, führt jedoch häufig zu instabilem Verhalten, da dem System nach wie vor eine explizite Entscheidungsebene fehlt, um den Abfragetyp zu bestimmen und die richtigen Einschränkungen vor dem Abruf durchzusetzen.</p><h2>Die Anatomie der E-Commerce-Absicht: „Head“ und „Tail“</h2><p>In diesem Abschnitt verwenden wir „Head“ und „Tail“ als praktische Kurzform für gängige Navigations- und Suchmuster im E-Commerce. In der realen Welt enthalten viele Anfragen Aspekte von beidem:</p><h3>„Head“-Abfragen (deterministische Absicht)</h3><p>Dies sind direkte, navigationsbezogene Abfragen, bei denen der Nutzer genau weiß, was er möchte:</p><ul><li><p>Absicht in Bezug auf einen einzelnen Artikel ("Orangen", "Milch", "Brot").</p></li><li><p>Genaue Marken oder Produktfamilien („iPhone 15 Pro“, „Diet Coke“).</p></li><li><p>Artikelnummern, Modellnummern, Größen ("ABC123", "air max 270").</p></li></ul><p>Für diese Abfragen kann die lexikalische Suche die Token-Korrespondenz (Wortübereinstimmung) abdecken, aber das Unternehmen erwartet außerdem, dass Constraints eingehalten werden, vorhersehbare Rankings zurückgegeben werden und die Ergebnisse steuerbar sind. Ein Merchandiser muss sicherstellen, dass eine Abfrage innerhalb der richtigen Kategoriegrenzen aufgelöst wird, die Eligibility-Kriterien einhält und bestimmte geschäftliche Prioritäten sichtbar macht.</p><p>Governance ist erforderlich, um die beabsichtigte Lösung durchzusetzen. Zum Beispiel sollten „Orangen“ der Kategorie Frischwaren zugeordnet werden, nicht Orangensaft, Orangenmarmelade oder Orangenlimonade.</p><h3>„Tail“-Abfragen (explorative Datensuche)</h3><p>Dies sind beschreibende, absichtsvolle Suchanfragen, mit denen Käufer recherchieren:</p><ul><li><p>„Geschenk für Opa mit einer Vorliebe für Süßes“</p></li><li><p>„Jacke zum Wandern in den Bergen“</p></li><li><p>„Schuhe, um den ganzen Tag zu stehen“</p></li></ul><p>Der lexikalische Abruf hat hier oft Schwierigkeiten. Der semantische Abruf ist überlegen, weil er das Abfragekonzept mit dem Produkt verknüpfen kann, selbst wenn die Formulierungen nicht übereinstimmen. Aber auch der semantische Abruf allein reicht selten aus. Abfragen aus der Praxis erfordern oft, dass Constraints durchgesetzt werden – unabhängig davon, welche Abrufmethode verwendet wird.</p><h2>Die Einschränkungen sind orthogonal zur Abrufmethode.</h2><p>Das Anwenden von Einschränkungen auf semantische Abrufe bedeutet nicht <em>hybride Suche</em>. Dies sind orthogonale Konzepte. Einschränkungen wie Filter und Boosts in Elasticsearch können auf jede lexikalische, semantische oder hybride Suche angewendet werden. Die Herausforderung besteht darin, zu entscheiden, wie die Abfrage interpretiert werden soll, welche Einschränkungen durchgesetzt werden müssen und welche Abfragemethode verwendet werden soll.</p><p>Im Folgenden finden Sie einige Beispiele für Abfragen, die die Datensuche mit festen Einschränkungen kombinieren:</p><ul><li><p><strong>Orangen:</strong> Lexikalische Suche nach „Orangen“ unter Hinzunahme einer Kategoriebeschränkung, wie beispielsweise „Obst“ oder „Frischwaren“, wodurch Orangenmarmelade, Orangensaft und Orangenlimonade ausgeschlossen werden.</p></li><li><p><strong>Früchte mit hohem Vitamin-C-Gehalt unter 4 $:</strong> Semantische Suche nach dem Nährwert plus Einschränkungen, die die Ergebnisse auf die Kategorie Obst und Produkte unter 4 $ beschränken.</p></li><li><p><strong>Bequeme Schuhe für die Arbeit:</strong> Semantischer Informationsabruf für kontextuelle Absicht plus eine Kategoriebeschränkung, die die Ergebnisse auf Schuhe begrenzt.</p></li></ul><p>Diese Abfragen können nicht mit einem einzigen Ansatz bearbeitet werden:</p><ul><li><p>Ein <strong>rein lexikalischer Abruf</strong> ist hier oft unzureichend, da Phrasen wie „reich an Vitamin C“ oder „komfortabel“ möglicherweise nicht als saubere, strukturierte Attribute existieren. Sie müssen möglicherweise aus Produktbeschreibungen, Bewertungen oder Spezifikationen abgeleitet werden.</p></li><li><p>Auch eine <strong>rein semantische Suche</strong> reicht nicht immer aus, da eine Suchanfrage wie „vitamin-C-reiche Früchte“ ohne explizite Einschränkungen auf Vitaminpräparate, Getränke mit Fruchtgeschmack oder vitaminreiches Gemüse außerhalb der beabsichtigten Kategorie und Preisklasse ausgeweitet werden könnte.</p></li></ul><p>Eine Steuerungsebene legt fest, ob eine Abfrage eine lexikalische Suche, ein semantisches Verständnis, die Durchsetzung von Einschränkungen oder eine Kombination dieser Elemente erfordert. Ohne diese Ebene könnten E-Commerce-Teams in folgende Situation geraten:</p><ul><li><p><strong>Übermäßige Einschränkung:</strong> Verwendung lexikalischer Abfragen für semantische Anfragen (zum Beispiel „Geschenk für Opa“).</p></li><li><p><strong>Unterbeschränkung: </strong>Verwendung semantischer Abfragen für Head-Abfragen mit hoher Intention (z. B. „Orangen“).</p></li></ul><p>Die Herausforderung im Bereich der Governance besteht darin, ein System zu entwickeln, das für jede Art von Anfrage die richtige Entscheidung treffen kann.</p><h2>Was passiert ohne Governance?</h2><p>Die häufigste Fehlerquelle ist ganz einfach: Teams nehmen die rohe Benutzeranfrage und leiten sie direkt an eine einzige Abrufstrategie weiter (lexikalisch, semantisch oder hybrid), ohne eine zwischengeschaltete Governance-Ebene.</p><h3>Die lexikalische Suche verfehlt die beabsichtigte Auflösung.</h3><p>Wenn ein Nutzer nach "Orangen" sucht, kann eine lexikalische Suchstrategie alles zurückgeben, was dieses Token enthält: Orangensaft, Orangenmarmelade oder Orangenlimonade. Das System hat den Begriff korrekt zugeordnet, aber ohne Governance kann es den beabsichtigten Einkaufskontext (die Frucht) nicht auflösen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1b4595242ea6eb05/6a1710f35091684ba3e1bbd0/99abc7a46f9c56a26a68d0a089d7ab830b9b5568-1560x814.png" alt=" Eine Illustration, die zeigt, wie eine einzige Suche nach „Orangen“ verschiedene verwandte Ergebnisse liefert, wie beispielsweise Marmelade, frische Orangen und Orangenlimonade." /><h3>Der semantische Abruf weitet sich über die beabsichtigten Einschränkungen hinaus aus</h3><p>Wenn ein Nutzer nach „Orangen“ sucht, kann ein semantisches System konzeptionell verwandte Elemente aus nahegelegenen Produktkonzepten abrufen. Das System versteht zwar den übergeordneten Bereich (Obst oder Gemüse), aber ohne explizite Steuerung kann es dennoch über die vom Nutzer beabsichtigte Beschränkung (speziell Orangen) hinausgehen.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltff1aba60c7b13fc8/6a1710f58b73cb3cef18a117/c9de86363ecbed499fe48259f47b3c5b2c26bc43-1568x796.png" alt="Diagramm, das zeigt, wie eine Abfrage nach „Orangen“ zu verschiedenen Obstkategorien weitergeleitet wird, einschließlich Äpfeln, Orangen und gemischtem Obst." /><h3>Die Lücke ist Governance</h3><p>Erforderlich ist eine vorgelagerte Entscheidungsebene, die die Abfrageabsicht bestimmt und die richtigen Einschränkungen durchsetzt, bevor der Abruf beginnt. Dadurch werden Probleme wie die folgenden behoben:</p><ul><li><p>Ähnliche oder verwandte Artikel, die neben dem angezeigt werden, was der Nutzer eigentlich gesucht hat.</p></li><li><p>Verschwimmende Kategoriegrenzen („Getränke“ vs. „Frischwaren“).</p></li><li><p>Unfähigkeit, saisonale Boosts oder Kampagnen umzusetzen.</p></li><li><p>Unvorhersehbare und unerklärliche Ergebnisse.</p></li></ul><h2>Absichtserkennung und Weiterleitung: Die notwendige Steuerungsebene</h2><p>Ein gesteuertes Suchsystem führt eine schlanke Steuerungsebene vor dem Abruf ein (vor der Ausführung einer Abfrage in Elasticsearch). Auf dieses Steuerelement wird in den Teilen <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-control-plane-architecture">3</a> und <a href="https://www.elastic.co/search-labs/blog/elasticsearch-percolator-search-governance">4</a> dieser Blogreihe ausführlich eingegangen. Vorerst beschränken wir uns darauf, zu erläutern, was es leisten kann, ohne jedoch auf seine Funktionsweise einzugehen:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt373bd838e1751998/6a1710f74a531b1e5436aa57/88c3d0f9731a128d73a765dcdffed897308110a6-2680x766.png" alt="Diagramm, das veranschaulicht, wie verschiedene Abfragen über eine Steuerungsebene an BM25 oder semantische Suchergebnisse weitergeleitet werden." /><p>Eine Steuerungsebene kann Absichten erkennen, Geschäftsrichtlinien anwenden und die entsprechende Abrufstrategie wie folgt sicherstellen:</p><p><strong>1. Absichtssignale erkennen</strong></p><ul><li><p>Ist diese Abfrage wahrscheinlich Navigation oder Entdeckung?</p></li><li><p>Handelt es sich um eine bekannte Head-Abfrage (Milch, Brot, Bananen)?</p></li><li><p>Gibt es eine bekannte Interpretation für ein Produkt, eine Marke oder eine Kategorie (beispielsweise sollte „Orangen“ zu „Frischwaren“ führen)?</p></li><li><p>Ist die Abfrage ein SKU-ähnliches Muster?</p></li><li><p>Fällt die Abfrage unter eine aktive Kampagne oder eine saisonale Richtlinie (beispielsweise während der Weihnachtszeit, um Suchergebnisse zum Thema Truthahn stärker hervorzuheben)?</p></li><li><p>Impliziert die Abfrage Einschränkungen (Kategorie, Attribute, Ausschlüsse, Preis/Größe/Farbe)?</p></li></ul><p><strong>2. Setzen Sie Governance- und Geschäftsrichtlinien um.</strong></p><ul><li><p>Wenden Sie zunächst deterministische Einschränkungen an (Kategorie/Attribut/Negation/Verfügbarkeit).</p></li><li><p>Wenden Sie aktive Merchandising-Maßnahmen an (hervorheben/verbergen/fixieren/überschreiben).</p></li><li><p>Lösen Sie Konflikte mithilfe von Prioritätsregeln (z. B. Kampagnen-Überschreibungen gegenüber globalen Richtlinien).</p></li></ul><p><strong>3. Weg zur geeigneten Abrufstrategie</strong></p><ul><li><p>Lexikalisch (schnell, deterministisch) für navigationsorientierte Suchanfragen mit hoher Kaufabsicht.</p></li><li><p>Semantische Suche für echte Entdeckungsanfragen.</p></li><li><p>Ein hybrider Ansatz, bei dem kombinierte lexikalische und semantische Signale unter expliziten geschäftlichen Vorgaben einen Mehrwert schaffen.</p></li></ul><p>In der Praxis ist der Ausgang der Steuerungsebene nicht einfach „Hybrid verwenden“ oder „Semantik verwenden“. Es handelt sich um einen geregelten Abrufplan: eine Interpretation der Absicht des Kunden, der geltenden Einschränkungen und Richtlinien sowie der auszuführenden Abrufstrategie. Ein paar einfache Beispiele verdeutlichen dies:</p><p>Kundenabfrage</p><p>Gesteuerte Interpretation</p><p>Beispiel-Abrufplan</p><p>„Schokolade ohne Erdnüsse“</p><p>Produktorientierte Abfrage mit einer strengen Ausschlussbedingung</p><p>Lexikalische Suche nach „Schokolade“ sowie ein Ausschlussfilter für Produkte, die Erdnüsse enthalten</p><p>„billiges Olivenöl“</p><p>Produkt-/Kategorie-Abfrage mit einer Preisbeschränkung</p><p>Lexikalischer Abruf für Olivenöl plus ein Preisfilter, der auf den Schwellenwert des Einzelhändlers für „günstig“ begrenzt ist</p><p>„Obst reich an Vitamin C unter 4 $“</p><p>Discovery-Abfrage, die semantisches Verständnis sowie strikte Einschränkungen erfordert</p><p>Semantische Suche nach Produkten für Ernährungszwecke, beschränkt auf die Kategorie „Obst“ und gefiltert nach Produkten mit einem Preis unter 4 $</p><p>Eine Steuerungsebene wählt für jede Abfrage konsistent, vorhersehbar und in großem Maßstab die richtige Richtlinie und Abrufstrategie aus. Dies macht fortgeschrittene Abrufmethoden in der Produktion vorhersehbarer, da absichtsbasierte Einschränkungen zuerst durchgesetzt werden und Routing-Entscheidungen explizit statt implizit getroffen werden.</p><h2>Wie dies mit anderen Ansätzen zusammenhängt</h2><p>Einige Teams nutzen verbesserte Einbettungsmodelle, um die Produktsemantik besser zu erfassen, was die Qualität der semantischen Suche erheblich verbessern kann. Andere nutzen Ansätze zur Neureihenfolge, wie beispielsweise <a href="https://www.elastic.co/docs/solutions/search/ranking/learning-to-rank-ltr">Learning To Rank (LTR)</a>, um die Reihenfolge der Ergebnisse nach der Abfrage auf der Grundlage von Interaktions- oder geschäftsbezogenen Signalen zu optimieren. Beide sind wertvoll und ergänzen sich oft. Bessere Einbettungen verbessern den Ähnlichkeitsabgleich. Durch die Neubewertung wird die Reihenfolge der abgerufenen Kandidaten verbessert.</p><p>Governance befasst sich mit einer anderen Ebene des Problems: Sie ist dem Abrufprozess vorgelagert. Es entscheidet, welche Abrufstrategie verwendet wird (zum Beispiel lexikalisch, semantisch oder hybrid), welche deterministischen Einschränkungen erforderlich sind und welche Abfragen mehrere Geschäftsrichtlinien kombinieren sollten.</p><h2>Was eine gesteuerte Steuerungsebene ermöglicht</h2><p>Sobald eine Governance-Ebene eingerichtet ist, verändert sich das Betriebsmodell grundlegend. Umsatzrelevante Abfragen lassen sich vorhersagen. Geschäftsteams können das Suchverhalten anpassen, ohne auf die Release-Zyklen der Entwickler warten zu müssen. Und fortgeschrittene Abrufmethoden, wie semantische und hybride Verfahren, können schrittweise eingeführt werden – im Rahmen von Routing-Regeln und Sicherheitsvorkehrungen – anstatt als globaler Ein-/Aus-Schalter.</p><p>Der <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">nächste Beitrag</a> dieser Reihe befasst sich damit, wie dieses Betriebsmodell in der Praxis aussieht und warum es möglicherweise genauso wichtig ist wie die ihm zugrunde liegende Suchtechnologie.</p><p>Wenn ein Merchandiser ein Jira-Ticket erstellen und auf eine Bereitstellung warten muss, um eine umsatzkritische Abfrage zu beheben, liegt der Engpass nicht in der Engine, sondern im Betriebsmodell. Eine moderne E-Commerce-Suche muss in der Lage sein, geschäftliche Absichten schnell und sicher in kontrolliertes, überprüfbares Suchverhalten umzusetzen, dabei aber weiterhin auf erweiterte Suchfunktionen zurückzugreifen, wo diese einen messbaren Mehrwert bieten.</p><h2>Wie geht es weiter in dieser Serie?</h2><p>Die in dieser Reihe behandelten Muster greifen bereits vor der Abfrage an: Sie dienen dazu, geschäftliche Absichten in die richtige Abfragestrategie umzusetzen, noch bevor die Abfrage generiert wird. Im <a href="https://www.elastic.co/search-labs/blog/ecommerce-search-governance-zero-deploy">nächsten Beitrag</a> wechseln wir vom technischen zum operativen Problem: Was passiert, wenn Geschäftsteams das Suchverhalten ohne ein technisches Deployment ändern können, und warum Governance das sicher macht?</p><h2>Setzen Sie die reglementierte E-Commerce-Suche in die Praxis um</h2><p>Technische Engpässe, instabile Logik auf Anwendungsebene und unvorhersehbare Suchergebnisse sind Probleme, bei deren Lösung Ihnen Elastic Services im Rahmen von E-Commerce-Projekten für Unternehmen behilflich sein kann. Die in dieser Reihe beschriebene Architektur der verwalteten Steuerungsebene wurde von Elastic Services Engineering entwickelt.</p><p>Wenn Ihr Team Entwicklungsressourcen darauf verwendet, Merchandising-Anforderungen in Codeänderungen umzusetzen, oder wenn Ihr Rückstand bei der Suchrelevanz scheinbar nie abnimmt, können wir Ihnen dabei helfen, Ihre aktuelle Architektur zu bewerten und einen Weg zu einer kontrollierten, vom Geschäftsteam editierbaren Suche zu ebnen. Kontaktieren Sie <a href="https://www.elastic.co/consulting">Elastic Services</a>.  </p><h2>Nehmen Sie an der Diskussion teil</h2><p>Haben Sie Fragen zur Suchsteuerung, zu Abrufstrategien oder zur Sucharchitektur im E-Commerce? Nehmen Sie an der <a href="https://discuss.elastic.co/">Diskussion der Elastic-Community</a> teil.</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[Operativer Betrieb]]></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>