<?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[Mappings - 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[Mappings - 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/blog/category/mappings</link>
    </image>
    <link>https://www.elastic.co/de/search-labs/blog/category/mappings</link>
    <atom:link href="https://www.elastic.co/de/search-labs/rss/category/mappings.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[de]]></language>
    <lastBuildDate>Mon, 28 Sep 2026 17:21:33 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Elasticsearch ES|QL ermöglicht die Volltextsuche in Daten, die nie von Ihnen indiziert wurden.]]></title>
    <description><![CDATA[MATCH und TO_TEXT ermöglichen die Volltextsuche in Daten, die nie von Ihnen indiziert wurden. So können Sie berechnete Spalten, nicht zugeordnete Felder und Verbunddaten in ES|QL durchsuchen.]]></description>
    <content:encoded><![CDATA[<p>ES|QL MATCH führt jetzt eine Volltextsuche auf Daten aus, die Sie nie indexiert haben. Berechnete Spalten, nicht zugeordnete Felder, spontan zusammengestellte Zeichenfolgen, sogar Verbunddaten, die in S3 gespeichert sind. Die neue Funktion TO_TEXT weist ES|QL an, jede Zeichenfolge als analysierbaren Text zu behandeln, sodass MATCH Werte tokenisieren, Groß-/Kleinschreibung auflösen und Terme abgleichen kann, die nur für die Dauer einer Abfrage existieren. Das geht über die LIKE- und RLIKE-Mustererkennung hinaus, die die meisten Abfrage-Engines für nicht indexierte Zeichenfolgen anbieten: Es handelt sich um echte Analyse. Jetzt verfügbar in Elastic Cloud Serverless und als technische Vorschau in Elasticsearch 9.5.</p><h2>Wie MATCH und TO_TEXT die Volltextsuche in beliebigen ES|QL-Ausdrücken ermöglichen</h2><p>Beginnen wir mit einer Abfrage, die in Elasticsearch 9.4 unmöglich war und <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/eval">den EVAL-Befehl</a> verwendet:</p><p>In diesem Beispiel hat Summary keine Mapping- oder Analyzer-Konfiguration. Es ist auch mit keinem invertierten Index verbunden. Es existiert nur für die Dauer dieser Abfrage, kann jetzt aber trotzdem durchsucht werden. Das machen zwei Ergänzungen möglich.</p><p>Erstens akzeptiert <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/search-functions/match">MATCH</a> nun jeden Ausdruck als erstes Argument, nicht nur ein abgebildetes Feld. Dies umfasst Spalten, die von EVAL erzeugt werden, sowie Funktionsergebnisse, die inline verwendet werden. Es enthält auch nicht zugeordnete Felder, die direkt aus dem Originaldokument geladen wurden. Darüber hinaus werden in diesem neuen Anwendungsfall alle normalerweise von MATCH akzeptierten Datentypen unterstützt.</p><p>Der zweite Teil davon ist die neue <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/type-conversion-functions/to_text">TO_TEXT-Funktion</a>, die die erste ES|QL-Konvertierungsfunktion ist, die eine Ausgabe vom Typ Text erzeugt. Bisher konnten Textspalten nur aus indizierten zugeordneten Feldern stammen, und alle von ES|QL-Ausdrücken erzeugten Zeichenfolgen waren Schlüsselwortwerte statt Textwerte. Die Unterscheidung ist wichtig, weil MATCH die beiden unterschiedlich behandelt: Textwerte werden analysiert, während Keyword-Werte exakt verglichen werden, was der Umschreibung einer MATCH-Abfrage auf einem indexierten Schlüsselwortfeld in eine Termanfrage ähnelt. TO_TEXT(x) ist die Art, wie Siew ES|QL Folgendes sagen: <em>Behandle diese Zeichenfolge als Volltext</em>.</p><p>Dies wird als technische Vorschau in Elasticsearch 9.5 ausgeliefert und hat daher einige Einschränkungen:</p><ul><li><p>Es wird derzeit nur gefiltert. Ein MATCH-Ergebnis in einem Ausdruck trägt noch nicht zur Relevanzbewertung bei; nur Übereinstimmungen in indizierten Feldern wirken sich auf die Bewertung aus.</p></li><li><p>Abfrageoptionen wie Unschärfe und andere werden beim Abgleich eines Ausdrucks noch nicht unterstützt.</p></li><li><p>Der Laufzeittext wird mit dem Standard-Analyzer analysiert. Dies ist noch nicht konfigurierbar.</p></li></ul><p>Es wird daran gearbeitet, diese Einschränkungen zu beheben.</p><h2>Warum sollte man in ES|QL Volltextsuche statt LIKE oder RLIKE verwenden?</h2><p>ES|QL hatte bereits zwei Möglichkeiten, Zeichenfolgen ohne Index zu suchen: LIKE (Wildcard-Muster) und RLIKE (reguläre Ausdrücke). Beide funktionieren bei jedem Zeichenfolge-Ausdruck, daher ist es fair zu fragen, was MATCH hinzufügt. Die Antwort ist <a href="https://www.elastic.co/docs/manage-data/data-store/text-analysis">analysis</a>, eine fortgeschrittenere Suchmethode, die Techniken wie Stemming und Synonyme verwendet. Es verwendet auch eine Stoppwortbehandlung.</p><p>LIKE ist einfaches Substring-Matching, ohne jegliches Verständnis der Wörter, aus denen eine Zeichenfolge besteht. Nehmen wir beispielsweise an, Sie suchen nach Log-Meldungen über einen Fuchs:</p><p>„Fuchs in der Nähe des Hühnerstalls gesichtet“ wird aufgrund der Großschreibung nicht gefunden, während es „Von der Konkurrenz überlistet“ ein Treffer ist, obwohl das überhaupt nichts mit einem Fuchs zu tun hat. Das Verfahren versagt in beiden Richtungen: Es kommt zu falschen Negativbefunden bei der Großschreibung und zu falschen Positivbefunden bei innerhalb anderer Wörter verborgenen Teilzeichenfolgen.</p><p>Reguläre Ausdrücke können das Problem der Groß-/Kleinschreibung beheben, aber das Problem der Wortgrenzen wird schnell unübersichtlich. Hier ist ein Beispiel:</p><p>Und selbst das stimmt noch nicht. Der Fuchs am Ende eines Satzes, gefolgt von ! oder ?, ist ihm entgangen und es sagt nichts über Tabulatoren, Anführungszeichen oder Klammern aus. Mit jeder Korrektur wird das Muster länger, und die nächste Person, die die Abfrage liest, muss nachvollziehen, was das eigentlich passiert.</p><p>MATCH beseitigt das Problem, weil sowohl die Abfrage als auch der Wert durch einen <a href="https://www.elastic.co/docs/reference/text-analysis/analyzer-reference">Analyzer</a> laufen, der den Text in Kleinbuchstaben tokenisiert und dann Term für Term abgleicht:</p><p>Diese Abfrage passt zu Werten wie „Der schnelle braune Fuchs“ und „FUCHS in der Nähe des Hühnerstalls gesehen“, aber nicht „Von der Konkurrenz überlistet“ oder „FOXTROT-Protokoll aktiviert“, unabhängig von jeglicher Zeichensetzung um die Wörter. Selbstverständlich funktioniert das alles auch für Abfragen mit mehreren Begriffen, wie z. B. MATCH(TO_TEXT(message), „brauner Fuchs“), genau so, wie man es erwarten würde.</p><p>Es wird daran gearbeitet, die <a href="https://www.elastic.co/docs/reference/text-analysis/analysis-lang-analyzer">Nutzung der 36 dedizierten Sprachanalysatoren</a> zu ermöglichen, mit Unterstützung für natürliche Sprachen auf Daten, die nie indexiert oder kartiert wurden.</p><h2>Anwendungsfälle der Volltextsuche für unindexierte und nicht abgebildete Daten</h2><p>Die obigen Beispiele suchten Werte, die aus <a href="https://www.elastic.co/docs/manage-data/data-store/mapping">abgebildeten Feldern</a> berechnet wurden. Die interessantesten Anwendungsfälle für ES|QL MATCH bei Ausdrücken betreffen Daten, die zuvor überhaupt nicht durchsuchbar waren. Schauen wir uns einige Beispiele an.</p><h3>Wie kann man in ES|QL nach nicht zugeordneten Feldern suchen, ohne ein Mapping hinzuzufügen?</h3><p>Manchmal lässt man absichtlich ein Feld aus den Mappings weg, wie zum Beispiel eine ausführliche Stack-Trace oder eine rohe Anfrage-Nutzlast. Du könntest sogar einen Debug-Blob weglassen. Das Indexieren eines dieser Felder würde Speicherplatz auf der Festplatte und im Heap-Speicher des Dokuments beanspruchen und wäre für ein Feld, das man möglicherweise nur einmal pro Quartal abfragt, nicht lohnenswert.</p><p>Diese Entscheidung war immer endgültig, weil <a href="https://www.elastic.co/search-labs/blog/esql-unmapped-fields">nicht zugeordnete Felder</a> für Abfragen völlig unsichtbar waren. In Elasticsearch 9.5 können Sie mit SET unmapped_fields="load" bewirken, dass ES|QL nicht zugeordnete Felder direkt aus dem Quelldokument als Schlüsselwörter lädt. Anschließend wird der Ausdruck in TO_TEXT eingeschlossen, und nun können Sie eine Volltextsuche darauf ausführen:</p><p>Hier wurde stack_trace nie zugeordnet. Jeder Wert wird aus den Originaldokumenten abgerufen und direkt analysiert. Sie werden zeilenweise einander zugeordnet. Das ist echte Arbeit und wird niemals so schnell sein wie eine <a href="https://www.elastic.co/docs/manage-data/data-store/index-basics">invertierte</a> Index-Suche. Aber jetzt ist das Feld, das Sie nicht indexiert haben, nicht mehr undurchsuchbar. Sie können das Mapping für den Alltag klein halten und trotzdem die einmal im Quartal anstehende Frage beantworten, wenn es darauf ankommt.</p><h3>Volltextsuche in einem Stichwortfeld ohne Neuindizierung</h3><p>Keyword-Felder können vieles bewirken. Sie liefern exakte Abgleiche, schnelle Aggregationen und Sortierung, weshalb so viele Felder auf diese Weise zugeordnet werden. Die Mappings der Daten erfolgen jedoch erst, wenn sie eintreffen, und es kann leicht passieren, dass man am Ende etwas anderes mit den Daten machen möchte, als man ursprünglich beabsichtigt hatte. Vielleicht wurde „product_name“ als Keyword zugeordnet, weil die Dashboards darauf aggregieren, und nachdem ein Jahr Produktdaten eingegangen ist, möchte jemand innerhalb der Werte von „product_name“ suchen können.</p><p>Die alte Antwort war, das Mapping auf Text zu ändern (oder ein Multi-Feld hinzuzufügen) und alles neu zu indexieren. Das kann sowohl zeitaufwändig als auch kostspielig sein, und in vielen Fällen wollen sich die Nutzer einfach nicht darum kümmern. Die neue Antwort ist ein Funktionsaufruf:</p><p>TO_TEXT wandelt die Keyword-Werte spontan in Text um; daher analysiert MATCH sie, anstatt sie exakt zu vergleichen. So können Sie ein Schlüsselwort-Feld abfragen, ohne ein Mapping erstellen oder das Quelldokument neu zu indexieren. Wenn die Suche zu einer alltäglichen Anfrage wird, ist das Indizieren des Feldes als Text zwar immer noch der richtige langfristige Schritt, aber mit TO_TEXT erhalten Sie heute schon eine Antwort, ohne zusätzlichen Aufwand.</p><h3>Das gleiche Feld in Indizes mit unterschiedlichen Mappings durchsuchen</h3><p><a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-multi-index">ES|QL kann viele Indizes umfassen</a>, und dasselbe Feld muss nicht immer in allen gleich aussehen. Wenn dasselbe Feld unterschiedliche Typen in verschiedenen Indizes hat, behandelt ES|QL es als Unionstyp, und eine Konvertierungsfunktion löst den Konflikt. Betrachten wir ein Beispiel, in dem das Message-Feld in der diesjährigen Indexvorlage den Typ „Text“ hat, in der letztjährigen Vorlage aber ein Keyword war:</p><p>Jeder Wert wird zur Abfragezeit analysiert, unabhängig davon, ob er aus dem Textindex oder dem Stichwortindex stammt. Die Keywordwerte aus den älteren Indizes werden wie alles andere tokenisiert und kleingeschrieben, sodass „connection reset“ unabhängig davon, in welchem Index es sich befindet, „Connection RESET by peer“ findet.</p><p>Ein weiterer interessanter Fall ist, wenn ein Feld nur in einem Index abgebildet wird, aber auch im anderen vorhanden (und nicht abgebildet):</p><p>Es gibt eine Nuance, die es wert ist, hier erwähnt zu werden. Wenn error_details in logs-2026, aber nicht in logs-2025 abgebildet ist, kann Elasticsearch diese Abfrage nicht auf <a href="https://lucene.apache.org/">Lucene</a> verschieben, da die Indizes, in denen das Feld nicht abgebildet ist, stillschweigend keine Übereinstimmungen liefern würden. Stattdessen stellt der Planer fest, dass das Feld möglicherweise nicht zugeordnet ist und wertet die gesamte MATCH Zeile für Zeile aus, unabhängig davon, woher die Zeilen stammen. Sie müssen nicht wissen, in welchem Ihrer Indizes das Feld zugeordnet ist; die Abfrage beantwortet einfach die Frage.</p><h2>Wie ES|QL Text zur Abfragezeit ohne invertierten Index analysiert</h2><p>Wenn ES|QL einen MATCH-Abgleich mit einem Ausdruck plant, analysiert es die Abfragezeichenfolge einmalig, im Voraus, in eine Reihe von Begriffen. Wie jede Zeile anschließend ausgewertet wird, hängt vom Typ des Ausdrucks ab:</p><p><strong>Ausdruckstyp</strong></p><p><strong>Verarbeitung</strong></p><p><strong>Übereinstimmendes Verhalten</strong></p><p>Text (über TO_TEXT)</p><p>Analyzer tokenisiert Werte in Kleinbuchstaben</p><p>Token-gegen-Token-Vergleich; eine Zeile gilt als Treffer, wenn ein Token einem Abfrageterm entspricht (ODER-Semantik)</p><p>Schlüsselwort, IP, Datum, numerisch</p><p>Keine Analyse; die Abfragekonstante einmal in den nativen Typ konvertiert</p><p>Exakter Vergleich pro Zeile</p><p>Beide Wege umgehen Lucene vollständig und bewerten Werte Zeile für Zeile. Der Nichttextpfad spiegelt genau das wider, was eine Match-Query tut, wenn sie an Lucene für diese Feldtypen delegiert wird, sodass die Semantik unabhängig davon konsistent bleibt, ob die Abfrage einen Index trifft.</p><p>Eine Suche mit invertiertem Index führt ihre Arbeit zur Ingest-Zeit durch und greift bei der Abfrage niemals auf nicht übereinstimmende Dokumente zu. Ein Laufzeit-Match führt diese Analyse zur Abfragezeit für jede Zeile durch, die sie erreicht. Die eine Methode ist schnell, weil die Arbeit bereits erledigt ist; die andere ist flexibel, weil die Daten überhaupt nicht indexiert werden müssen.</p><h2>Was kommt als Nächstes für die ES|QL-Volltextsuche</h2><p>Alles in diesem Beitrag ist der erste Teil eines größeren Vorhabens, die Suche in ES|QL auf alles anzuwenden, nicht nur auf das, was man vorher indexiert hat. Die zuvor genannten Einschränkungen werden aktiv bearbeitet und die Roadmap geht weiter:</p><ul><li><p><strong>Bewertung.</strong> Runtime-Matches tragen zu _score bei, sodass Sie nach Relevanz sortieren können, auch wenn die Daten nie indexiert wurden.</p></li><li><p><strong>MATCH_PHRASE</strong><strong> auf Ausdrücke.</strong> Bereits in Elastic Cloud Serverless verfügbar, und kommt im Elastic Stack in Version 9.6.</p></li><li><p><strong>Konfigurierbare Analysatoren.</strong> Analyzer-Unterstützung für MATCH und MATCH_PHRASE bei Ausdrücken, die Language Analyzer, Stemming und Synonyme zur Abfragezeit ermöglichen.</p></li><li><p><strong>Matchoptionen.</strong> Optionen wie Unschärfe und Operator für Laufzeitübereinstimmungen.</p></li><li><p><strong>Vektorsuche.</strong> Generieren von Einbettungen pro Zeile und Ausführen der k-Nearest-Neighbor-Methode (kNN) auf Laufzeit-dense_vector-Ausdrücken, wodurch die semantische Suche auch auf unindizierte Daten ausgeweitet wird.</p></li></ul><h2>Probieren Sie noch heute die ES|QL-Volltextsuche für Ausdrücke aus.</h2><p>Sie können die Laufzeitsuche noch heute ausprobieren. Es ist jetzt in Elastic Cloud Serverless verfügbar, wo neue ES|QL-Fähigkeiten zuerst erscheinen und als technische Vorschau in Elasticsearch 9.5 ausgeliefert werden. Beginnen Sie mit der <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/search-functions">Suchfunktionsreferenz</a> und prüfen Sie die <a href="https://www.elastic.co/docs/reference/query-languages/esql/limitations">ES|QL-Einschränkungsseite</a> für die aktuellen Grenzen. Es ist eine technische Vorschau, weil wir Ihr Feedback wollen: Wenn Sie nach etwas suchen, das nie indexiert wurde, und überrascht, sei es positiv oder negativ, <a href="https://www.elastic.co/de/community">würden wir gerne davon hören</a>.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/full-text-search-unindexed-data</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/full-text-search-unindexed-data</guid>
    <category><![CDATA[ES|QL]]></category>
    <category><![CDATA[Mappings]]></category>
    <dc:creator><![CDATA[Kevin Corcoran,Ioana Tagirta]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9a74e633d05585a8/6a730774b8c2e64c3ebe0fd4/image1.jpg" length="0" type="image/jpeg"/>
    <pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Wie man Felder eines Elasticsearch-Index anzeigt]]></title>
    <description><![CDATA[Lernen Sie, wie Sie Felder eines Elasticsearch-Index mithilfe der _mapping- und _search-APIs, Unterfeldern, synthetischen _source-Daten und Laufzeitfeldern anzeigen können.]]></description>
    <content:encoded><![CDATA[<p>In diesem Artikel werden wir erläutern, wie man Felder eines Elasticsearch-Index anzeigt. Dies kann hilfreich sein, um die Struktur Ihrer Daten zu verstehen, bestimmte Felder zu identifizieren und Probleme zu beheben. Wir werden folgende Themen behandeln:</p><ol><li><p>Verwendung der <code>_mapping</code> -API zum Abrufen von Feldinformationen</p></li><li><p>Verwendung der <code>_search</code> API zum Anzeigen von Feldwerten</p></li><li><p>Unterfelder anzeigen</p></li><li><p>Synthetisches Feld „_source“</p></li><li><p>Laufzeitfelder</p></li></ol><h2>1. Verwendung der _mapping-API zum Abrufen von Feldinformationen</h2><p>Die <code>_mapping</code> API ermöglicht es Ihnen, die Mapping-Definition für einen oder mehrere Indizes abzurufen. Dies umfasst Informationen über die Felder, ihre Datentypen und weitere Eigenschaften. Um die Zuordnung für einen bestimmten Index abzurufen, verwenden Sie die folgende Anfrage:</p>GET /&lt;index_name&gt;/_mapping<p>Wenn Sie beispielsweise einen Index mit dem Namen <code>my_index</code> haben, können Sie dessen Zuordnung mit der folgenden Anfrage abrufen:</p>GET /my_index/_mapping<p>Die Antwort enthält die Mapping-Definition für den Index, die Informationen über die Felder und deren Eigenschaften enthält.</p><p>Es ist auch möglich, die Zuordnung eines bestimmten Feldes abzurufen. Dies kann nützlich sein, wenn Ihre Kartierung recht umfangreich ist und Sie sich nur auf ein bestimmtes Feld konzentrieren möchten. Um die Zuordnung eines bestimmten Feldes abzurufen, verwenden Sie die folgende Anfrage:</p>GET /my_index/_mapping/field/my_field<p>Sie können die Zuordnungen mehrerer Felder auch abrufen, indem Sie deren Namen durch Kommas trennen, wie in der folgenden Anfrage:</p>GET /my_index/_mapping/field/my_field_1,my_field_2,my_field_3<h2>2. Verwenden der _search-API zum Anzeigen von Feldwerten</h2><p>Um die Werte von Feldern in einem Elasticsearch-Index anzuzeigen, können Sie die <code>_search</code> API verwenden. Die <code>_search</code> API bietet Ihnen mehrere Möglichkeiten, die zurückgegebenen Felder zu steuern; die beiden wichtigsten sind:</p><ol><li><p><strong><code>_source</code></strong>Das Feld <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field"><code>_source</code></a> enthält den ursprünglichen JSON-Dokumentkörper genau so, wie er indexiert wurde, einschließlich aller Änderungen, die durch Ingestionspipelines oder Vorverarbeitungsschritte vorgenommen wurden. Um bestimmte Felder aus dem Quelldokument anzuzeigen, implementieren Sie eine Quellfilterung, wie wir im Folgenden sehen werden.</p></li><li><p><strong><code>fields</code></strong>Mit dem Parameter <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields"><code>fields</code></a> können Sie beim Durchführen einer Suche bestimmte Felder aus Ihren Dokumenten auf Basis der Indexzuordnung abrufen. Im Gegensatz zu <code>_source</code> kann <code>fields</code> auch Werte aus gespeicherten Feldern, Dokumentwerten oder Laufzeitfeldern zurückgeben, ohne auf <code>_source</code> zu verweisen. Für Standardfelder ohne Dokumentwerte oder gespeicherte Einstellungen wird jedoch auf <code>_source</code> zurückgegriffen. Dies kann viele Vorteile mit sich bringen, wie zum Beispiel eine höhere Leistungsfähigkeit und mehr, wie wir im Folgenden sehen werden.</p></li></ol><h3>Verwendung des Feldes _source</h3><p>Standardmäßig gibt die<code> _search</code> -API das Feld <code>_source</code> zurück, welches das ursprüngliche, indizierte JSON-Dokument enthält. Um bestimmte Felder anzuzeigen, können Sie Filter im Parameter <code>_source </code>der Suchanfrage hinzufügen; dies wird als Quellfilterung bezeichnet.</p><p>Hier ist ein Beispiel für eine Suchanfrage, die die Werte der Felder <code>title </code>und <code>author</code> für Dokumente im Index <code>my_index</code> zurückgibt:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["title", "author"]
}<p>In diesem Beispiel gibt der Parameter <code>_source</code> die zurückzugebenden Felder an.</p><p>Falls Sie noch mehr Kontrolle benötigen, können Sie die Eigenschaften <code>includes</code> und <code>excludes </code>des Objekts <code>_source</code> verwenden. Beispielsweise gibt die folgende Abfrage das Feld der obersten Ebene <code>title</code> und alle Unterfelder von <code>author</code> außer <code>author.description</code> zurück.</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "_source": {
     “includes”: [“title”, “author.*],
     “excludes”: [“author.description”]
  }
}<p>In diesem Beispiel verwenden wir das Muster <code>author.* </code> , um jedes direkte Unterfeld des Objekts <code>author </code>abzurufen. Dann schließen wir <code>author.description </code>explizit aus, sodass nur die übrigen Autorenfelder zurückgegeben werden. Beachten Sie, dass dies keine Leistungsverbesserungen mit sich bringt, da das Quell-JSON weiterhin geladen und analysiert werden muss, aber es kann die Größe der über das Netzwerk gesendeten Antwort verringern.</p><h3>Verwendung des Parameters „fields“</h3><p>Mit dem Parameter <code>fields</code> können Sie die in der Suchergebnisseinduktion zurückgegebenen Felder filtern. Die Verwendung <code>fields</code> anstelle von <code>_source</code> bietet mehrere Vorteile, darunter:</p><ul><li><p><strong>Verbesserte Performance: </strong><code>fields </code>kann Werte direkt aus <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-store">gespeicherten Feldern</a> oder <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/doc-values">Dokumentwerten</a> zurückgeben, ohne die vollständige <code>_source</code> laden zu müssen, wodurch die Größe der Antwortnutzlast kleiner wird.</p></li><li><p><strong>Formatierte Ausgabe:</strong> Bei Standardfeldern kann <code> fields</code> auf <code>_source</code> zurückgreifen, um die Werte zu erfassen. Dabei wird jedoch die Indexzuordnung herangezogen, um die Ausgabe korrekt zu formatieren, z. B. formatierte Datumsangaben, sodass sie mit den für Aggregationen und Sortierungen verwendeten Formaten konsistent sind.</p></li><li><p><strong>Zugriff auf Laufzeitfelder:</strong> <code>fields</code> kann Laufzeitfelder zurückgeben, die im ursprünglichen <code>_source</code> nicht existieren.</p></li><li><p>Weitere Vorteile finden Sie <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#search-fields-param">hier</a>.</p></li></ul><p>Um beispielsweise nur die Felder <code>title</code> und <code>author</code> im Index <code>my_index</code> zurückzugeben, können Sie die folgende Suchanfrage verwenden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author"],
  "_source": false
}<p>In der obigen Abfrage setzen wir das Feld <code>_source </code>auf false, damit wir das Quelldokument nicht zurückgeben. Dadurch kann die Nutzlastgröße der Antwort drastisch reduziert werden. Beachten Sie jedoch, dass dies nur funktioniert, weil die Felder <code>title</code> und <code>author</code> vom Feldtyp <code>keyword </code>sind, bei dem standardmäßig <code>doc_values</code> aktiviert ist. Wenn das Feld <code>doc_values</code> nicht aktiviert hat und <code>_source</code> auf false gesetzt ist, hat Elasticsearch keine Möglichkeit, diese abzurufen, und sie werden in der Antwort übersprungen.</p><p>Wichtig zu beachten ist, dass die <code>fields</code> -Antwort immer ein Array von Werten für jedes Feld zurückgibt, selbst wenn es nur einen einzigen Wert gibt. Dies liegt daran, dass Elasticsearch keinen dedizierten Array-Typ besitzt und jedes Feld mehrere Werte haben kann. Für weitere Informationen zu Arrays in Elasticsearch klicken Sie <a href="http://elastic.co/docs/reference/elasticsearch/mapping-reference/array">hier</a>.</p><h3>Weitere Möglichkeiten zum Abrufen von Feldern</h3><p>Obwohl das Abrufen von Feldern mit <code>_source</code> oder <code>fields</code> die empfohlenen Methoden sind, stehen für bestimmte Anwendungsfälle verschiedene Methoden zur Verfügung, wie zum Beispiel:</p><p><strong>Doc-Wertfelder:</strong> Wenn Sie <code>_source</code> komplett vermeiden möchten, können Sie mit dem Parameter <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#docvalue-fields"><code>docvalue_fields</code></a>suchen. Doc-Werte speichern die gleichen Feldwerte wie <code>_source</code> , jedoch in einer auf der Festplatte gespeicherten Datenstruktur, die für Sortierung und Aggregation optimiert ist.</p><p>Da es sich um separate Werte handelt, die nicht mit <code>_source</code> gespeichert sind, können Sie bestimmte Felder anfordern, ohne das gesamte <code>_source</code> zu laden. Dies ist nützlich, wenn Sie große Dokumente abfragen, aber nur wenige kleine Felder benötigen, die Dokumentwerte unterstützen. Ein weiterer Anwendungsfall für <code>docvalue_fields </code>besteht darin, dass Sie eine benutzerdefinierte Formatierung für die Felder <code>date</code> und <code>numeric</code> verwenden möchten, wie wir im folgenden Beispiel sehen werden.</p><p>Beachten Sie, dass dies nur für Felder funktioniert, für die Sie <code>doc_values</code> aktivieren, oder für Feldtypen, bei denen dies standardmäßig aktiviert ist, wie z. B. <code>keyword</code>, <code>date</code>, numerische Typen und <code>boolean</code>, nicht für <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text"><code>text</code></a> oder <a href="https://www.elastic.co/docs/reference/elasticsearch/plugins/mapper-annotated-text-usage"><code>annotated_text</code></a>.</p><p>In diesem Beispiel verwenden wir den Parameter <code>docvalue_fields</code> , um die Felder <code>title</code>, <code>author</code> und <code>published</code> abzurufen, ohne das vollständige Dokument <code>_source</code> zu laden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "docvalue_fields": [
    "title",
    "author",
    {
      "field": "published",
      "format": "epoch_millis"
    }
  ],
  "_source": false
}<p>Wenn diese Abfrage ausgeführt wird, greift Elasticsearch direkt auf die Werte in seinem spaltenorientierten Speicher auf der Festplatte zu, anstatt für jedes Dokument auf <code>_source </code>zu verweisen. Das Feld <code>published</code> wird dank des in der Abfrage angegebenen Parameters <code>format</code> im Format <code>epoch_millis</code> anstatt im Standardformat zurückgegeben.</p><p><strong>Gespeicherte Felder:</strong> Wenn Sie in der Zuordnung explizit bestimmte Felder als <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-store">gespeichert</a> markiert haben, können Sie mit dem Parameter <code>stored_fields</code> nach diesen Feldern filtern. Dies ist nützlich, wenn Sie kurze Antworten nur mit diesen spezifischen Feldern wünschen oder Felder, die Sie absichtlich zum späteren Abruf gespeichert haben. Es wird separat von <code>_source</code> gespeichert, daher ist diese Methode auch nützlich, um das Laden von <code>_source</code> zu vermeiden.</p><p>Wichtig zu beachten ist, dass diese Option standardmäßig deaktiviert und generell nicht empfehlenswert ist. Verwenden Sie stattdessen Quellfilter, um bestimmte Teilmengen des ursprünglichen Quelldokuments zurückzugeben.</p><p>In der folgenden Beispielabfrage verwenden wir den Parameter <code>stored_fields</code> , um das Feld <code>summary</code> abzurufen, das die Indexzuordnungskonfiguration ”<code>store”: true</code> hat.</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "stored_fields": ["summary"]
}<p>Wenn diese Abfrage ausgeführt wird, prüft Elasticsearch, ob dieses Feld mit <code>”store”: true</code> markiert wurde. Falls dies nicht der Fall ist, wird das Feld vollständig übersprungen.</p><h2>3. Unterfelder anzeigen</h2><p>Wenn Ihr Index Unterfelder enthält, können Sie die Punktnotation verwenden, um den Feldpfad im Parameter <code>fields</code> anzugeben. Beachten Sie, dass Unterfelder sich vom <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/nested">verschachtelten Feldtyp</a> unterscheiden. Wenn Sie beispielsweise ein Unterfeld mit dem Namen <code>address.city</code> haben, können Sie es wie folgt in die Suchergebnisseinlösung einbinden:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author", "address.city"],
  "_source": false
}<p>In diesem Beispiel enthält die Suchergebnisseinsendung die Werte der Felder <code>title</code>, <code>author</code> und <code>address.city</code> .</p><h2>4. Synthetische Quelle</h2><p>Wenn Sie die Funktionalität der Verwendung von<code> _source</code> beibehalten, aber gleichzeitig Speicherplatz sparen möchten, haben Sie die Möglichkeit, in Ihrer Indexzuordnung synthetisches <code>_source</code> zu verwenden. Die Funktion <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field#synthetic-source">Synthetic </a><a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field#synthetic-source"><code>_source</code></a> ermöglicht es Elasticsearch, die <code>_source</code> aus vorhandenen Daten wie gespeicherten Feldern und Dokumentwerten zu rekonstruieren, selbst wenn <code>_source</code> deaktiviert ist. Dadurch lässt sich viel Speicherplatz sparen, allerdings auf Kosten etwas geringerer Abfragegeschwindigkeiten, da die Rekonstruktion in Echtzeit erfolgt. Aktivieren Sie diese Funktion, indem Sie die folgenden Werte in Ihren Indexeinstellungen verwenden:</p>PUT idx
{
  "settings": {
    "index": {
      "mapping": {
        "source": {
          "mode": "synthetic"
        }
      }
    }
  }
}<p>Zu den Vorteilen der Verwendung von synthetischem <code>_source </code>gehören: vollständige Dokumentanzeige bei Verwendung der <code>_search</code> API, Quellfilterung und Kompatibilität mit anderen Funktionen und Tools wie Kibana, die die Verfügbarkeit <code>_source</code> voraussetzen, und das alles, ohne dass das vollständige <code>_source</code> Dokument gespeichert werden muss.</p><h2>5. Laufzeitfelder</h2><p><a href="https://www.elastic.co/docs/manage-data/data-store/mapping/runtime-fields">Mit Laufzeitfeldern</a> können Sie skriptgesteuerte Felder zur Abfragezeit oder in Ihrer Indexzuordnung unter einem Laufzeitblock definieren. Diese Felder werden nie indiziert, daher erhöht das Hinzufügen eines Laufzeitfelds nicht die Indexgröße, es wird aber niemals in <code>_source</code> angezeigt. Die in der Zuordnung definierten Laufzeitfelder sind persistent und für alle Abfragen verfügbar, während die zur Abfragezeit definierten Laufzeitfelder temporär sind und nur in dieser Suchanfrage verfügbar sind.</p><p>Der Hauptvorteil der Verwendung von Laufzeitfeldern besteht darin, dass man Felder zu Dokumenten hinzufügen kann, nachdem man sie bereits importiert hat, was die Zuordnungsentscheidungen vereinfacht. Laufzeitfelder eignen sich auch hervorragend, um Ihre Dokumente mit Werten anzureichern, die im Originaldokument nicht vorhanden sind, sondern mithilfe eines Skripts generiert werden, z. B. durch Formatieren einer Zeichenkette oder Berechnen einer Punktzahl.</p><p>Es ist außerdem zu beachten, dass Laufzeitfelder die Leistung beeinträchtigen können, da für jedes Dokument im Ergebnissatz ein Skript ausgeführt werden muss. Um <a href="https://www.elastic.co/docs/manage-data/data-store/mapping/retrieve-runtime-field">ein Laufzeitfeld abzurufen</a>, können Sie auch den Parameter <code>fields</code> der API <code>_search</code> verwenden.</p><h2>Fazit</h2><p>Die Anzeige von Feldern eines Elasticsearch-Index kann von der einfachen Abfrage von Werten mithilfe der Indexzuordnung oder <code>_source</code> bis hin zu fortgeschritteneren Methoden mit <code>fields</code>, <code>docvalue_fields</code> oder Laufzeitfeldern für mehr Kontrolle und Effizienz reichen. Das Verständnis der Vor- und Nachteile verschiedener Methoden ist der Schlüssel zur Optimierung Ihrer Sucherfahrung. Egal ob Sie Nutzdaten optimieren, Dokumente anreichern oder synthetische Daten <code>_source</code> verwenden, um Speicherplatz zu sparen, Elasticsearch bietet Ihnen zahlreiche Tools und Funktionen, um die benötigten Daten so zu finden, wie Sie sie benötigen. Mithilfe dieser Techniken können Sie die Struktur Ihrer Daten verstehen, bestimmte Felder identifizieren und Probleme beheben.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-index-show-fields</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-index-show-fields</guid>
    <category><![CDATA[Index-Daten]]></category>
    <category><![CDATA[Mappings]]></category>
    <dc:creator><![CDATA[JD Armada]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd041e871a8935448/6a17de320b0bedf404dd34ab/23b96aaa1a38b1f4747b4a87695d816f24c0cf70-720x421.jpg" length="0" type="image/jpeg"/>
    <pubDate>Wed, 06 Aug 2025 00:00:00 GMT</pubDate>
  </item>
  <item>
    <title><![CDATA[Zuordnung von Einbettungen zu Elasticsearch-Feldtypen: semantic_text, dense_vector, sparse_vector]]></title>
    <description><![CDATA[Erörterung, wie und wann semantic_text, dense_vector oder sparse_vector verwendet werden und wie diese mit der Einbettungsgenerierung zusammenhängen.]]></description>
    <content:encoded><![CDATA[<p>Die Verwendung von Einbettungen zur Verbesserung der Relevanz und Genauigkeit der Informationswiedergewinnung hat im Laufe der Jahre deutlich zugenommen. Tools wie Elasticsearch wurden weiterentwickelt, um diese Art von Daten durch spezialisierte Feldtypen wie dichte Vektoren, dünnbesetzte Vektoren und semantischen Text zu unterstützen. Um jedoch gute Ergebnisse zu erzielen, ist es unerlässlich zu verstehen, wie man Embeddings den verfügbaren Elasticsearch-Feldtypen <code>semantic_text</code>, <code>dense_vector</code> und <code>sparse_vector</code> korrekt zuordnet.</p><p>In diesem Artikel werden wir diese Feldtypen, ihre jeweiligen Anwendungsbereiche und ihren Zusammenhang mit Strategien zur Einbettungsgenerierung und -nutzung sowohl bei der Indizierung als auch bei der Abfrage besprechen.</p><h2>Dichter Vektortyp</h2><p>Der Feldtyp <code>dense_vector</code> in Elasticsearch dient zur Speicherung dichter Vektoren, die numerische Darstellungen von Daten wie Text, Bildern und Audio darstellen, wobei nahezu alle Dimensionen relevant sind. Diese Vektoren werden mithilfe von Einbettungsmodellen generiert, die von Plattformen wie OpenAI, Cohere oder Hugging Face bereitgestellt werden, und sind so konzipiert, dass sie die Gesamtsemantik der Daten erfassen, auch wenn diese keine exakten Begriffe mit anderen Dokumenten teilen.</p><p>In Elasticsearch können dichte Vektoren je nach verwendetem Modell bis zu 4096 Dimensionen haben. Das Modell all-MiniLM-L6-v2 erzeugt beispielsweise Vektoren mit 384 Dimensionen, während das Modell text-embedding-ada-002 von OpenAI Vektoren mit 1536 Dimensionen erzeugt.</p><p>Das Feld <code>dense_vector</code> wird üblicherweise als Standardtyp für die Speicherung dieser Art von Einbettungen verwendet, wenn eine größere Kontrolle erforderlich ist, z. B. durch die Verwendung vorab generierter Vektoren, die Anwendung benutzerdefinierter Ähnlichkeitsfunktionen oder die Integration mit externen Modellen.</p><h3>Wann und warum sollte man dense_vector-Typ verwenden?</h3><p>Dichte Vektoren eignen sich hervorragend, um semantische Ähnlichkeiten zwischen Sätzen, Absätzen oder ganzen Dokumenten zu erfassen. Sie eignen sich hervorragend, wenn es darum geht, die Gesamtbedeutung von Texten zu vergleichen, selbst wenn diese nicht dieselben Begriffe verwenden.</p><p>Das dichte Vektorfeld ist ideal, wenn Sie bereits eine externe Embedding-Generierungspipeline mit Modellen von Plattformen wie OpenAI, Cohere oder Hugging Face verwenden und diese Vektoren nur manuell speichern und abfragen möchten. Dieser Feldtyp bietet eine hohe Kompatibilität mit Einbettungsmodellen und volle Flexibilität bei der Generierung und Abfrage, sodass Sie steuern können, wie die Vektoren erzeugt, indiziert und während der Suche verwendet werden.</p><p>Darüber hinaus unterstützt es verschiedene Formen der semantischen Suche, mit Abfragen wie k-NN oder script_score für Fälle, in denen es notwendig ist, die Ranking-Logik anzupassen. Diese Möglichkeiten machen den dichten Vektor ideal für Anwendungen wie RAG (Retrieval-Augmented Generation), Empfehlungssysteme und personalisierte Suchen auf der Grundlage von Ähnlichkeit.</p><p>Schließlich ermöglicht Ihnen das Feld, die Relevanzlogik anzupassen, indem Sie Funktionen wie <code>cosineSimilarity</code>, <code>dotProduct</code> oder <code>l2norm</code> verwenden, um das Ranking an die Bedürfnisse Ihres Anwendungsfalls anzupassen. </p><p>Dichte Vektoren bleiben die beste Option für diejenigen, die Flexibilität, Anpassungsmöglichkeiten und Kompatibilität mit fortgeschrittenen Anwendungsfällen wie den oben genannten benötigen.</p><h3>Wie verwendet man die Abfrage für den Datentyp „dichter Vektor“?</h3><p>Bei Suchen in Feldern, die als <strong><code>dense_vector</code></strong> definiert sind, wird die k-nächste-Nachbarn-Abfrage verwendet. Diese Abfrage dient dazu, Dokumente zu finden, deren Dichtevektor dem Abfragevektor am nächsten kommt. Nachfolgend ein Beispiel für die Anwendung einer k-NN-Abfrage auf ein dichtes Vektorfeld:</p>{
  "knn": {
    "field": "my_dense_vector",
    "k": 10,
    "num_candidates": 50,
    "query_vector": [/* vector generated by model */]
  }
}<p>Zusätzlich zur k-NN-Abfrage besteht die Möglichkeit, bei Bedarf die Dokumentenbewertung anzupassen, indem man die script_score-Abfrage verwendet und sie mit Vektorvergleichsfunktionen wie <strong>cosineSimilarity, dotProduct oder l2norm</strong> kombiniert, um die Relevanz kontrollierter zu berechnen. Siehe das Beispiel:</p>{
"script_score": {
    "query": { "match_all": {} },
    "script": {
      "source": "cosineSimilarity(params.query_vector,
'my_dense_vector') + 1.0",
      "params": {
        "query_vector": [/* vector */]
      }
    }
  }
}<p>Wer tiefer in die Materie einsteigen möchte, dem empfehle ich den Artikel <a href="https://www.elastic.co/search-labs/blog/vector-search-set-up-elasticsearch">„Wie man die Vektorsuche in Elasticsearch einrichtet“.</a></p><p></p><h2>Sparse Vektortyp</h2><p>Der Feldtyp <strong><code>sparse_vector</code></strong> dient zum Speichern von dünnbesetzten Vektoren. Dabei handelt es sich um numerische Darstellungen, bei denen die meisten Werte null sind und nur wenige Terme ein signifikantes Gewicht haben. Dieser Vektortyp ist in termbasierten Modellen wie SPLADE oder ELSER (Elastic Learned Sparse EncodeR) üblich.</p><h3>Wann und warum sollte man den Sparse-Vektor-Typ verwenden?</h3><p>Sparse Vektoren sind ideal, wenn Sie eine präzisere Suche in lexikalischen Begriffen benötigen, ohne dabei semantische Intelligenz einzubüßen. Sie stellen den Text als Token/Wert-Paare dar und heben nur die relevantesten Begriffe mit zugehörigen Gewichtungen hervor, was für Klarheit, Kontrolle und Effizienz sorgt.</p><p>Dieser Feldtyp ist besonders nützlich, wenn Sie Vektoren auf der Grundlage von Begriffen generieren, wie beispielsweise in den Modellen ELSER oder SPLADE, die jedem Token unterschiedliche Gewichte zuweisen, basierend auf seiner relativen Bedeutung im Text.</p><p>Für den Fall, dass Sie den Einfluss bestimmter Wörter in der Suchanfrage steuern möchten, ermöglichen Ihnen Sparse-Vektor-Typen, die Gewichtung der Begriffe manuell anzupassen, um die Rangfolge der Ergebnisse zu optimieren.</p><p>Zu den wichtigsten Vorteilen zählen die Transparenz bei der Suche, da klar ersichtlich ist, warum ein Dokument als relevant eingestuft wurde, und die Speichereffizienz, da nur Token mit einem Wert ungleich Null gespeichert werden, im Gegensatz zu dichten Vektoren, die alle Dimensionen speichern.</p><p>Darüber hinaus sind dünnbesetzte Vektoren die ideale Ergänzung in hybriden Suchstrategien und können sogar mit dichtbesetzten Vektoren kombiniert werden, um lexikalische Präzision mit semantischem Verständnis zu verbinden.</p><h3>Wie verwendet man die Abfrage für den Datentyp „dünnbesetzter Vektor“?</h3><p>Mit der <strong><code>sparse_vector</code></strong> -Abfrage können Sie nach Dokumenten auf Basis eines Abfragevektors im Token/Wert-Format suchen. Nachfolgend finden Sie ein Beispiel für die Abfrage:</p>{
  "query": {
    "sparse_vector": {
      "field": "field_sparse",
      "query_vector": {
        "token1": 0.6,
        "token2": 0.2,
        "token3": 0.9
      }
    }
  }
}<p>Falls Sie ein trainiertes Modell bevorzugen, können Sie einen Inferenzendpunkt verwenden, der den Abfragetext automatisch in einen Sparse-Vektor umwandelt:</p>{
  "query": {
    "sparse_vector": {
      "field": "field_sparse",
      "inference_id": "the inference ID to produce the token/weights",
      "query": "search text"
    }
  }
}<p>Um dieses Thema weiter zu vertiefen, empfehle ich die Lektüre von <a href="https://www.elastic.co/search-labs/blog/sparse-vector-embedding">„Understanding sparse vector embeddings with trained ML models“</a>.</p><h2>Semantischer Texttyp</h2><p>Der Feldtyp <strong><code>semantic_text</code></strong> ist die einfachste und unkomplizierteste Möglichkeit, die semantische Suche in Elasticsearch zu nutzen. Die Generierung von Einbettungen erfolgt automatisch sowohl zur Indexierungs- als auch zur Abfragezeit über einen Inferenz-Endpunkt. Das bedeutet, dass Sie sich keine Gedanken über das manuelle Generieren oder Speichern von Vektoren machen müssen.</p><h3>Wann und warum sollte man semantischen Text verwenden?</h3><p>Das Feld <code>semantic_text</code> ist ideal für diejenigen, die mit minimalem technischem Aufwand und ohne manuelle Vektorbearbeitung beginnen möchten. Dieses Feld automatisiert Schritte wie die Generierung von Einbettungen und die Vektorsuche, wodurch die Einrichtung schneller und bequemer wird.</p><p>Sie sollten die Verwendung <code>semantic_text</code> in Betracht ziehen, wenn Sie Wert auf <strong>Einfachheit und Abstraktion</strong> legen, da dadurch <strong>die Komplexität der manuellen Konfiguration von Mappings, Embedding-Generierung und Ingestion-Pipelines entfällt</strong>. Wählen Sie einfach das Inferenzmodell aus, und Elasticsearch kümmert sich um den Rest.</p><p>Zu den wichtigsten Vorteilen gehören <strong>die automatische Generierung von Einbettungen,</strong> die sowohl während der Indizierung als auch während der Abfrage erfolgt, und <strong>das sofort einsatzbereite Mapping</strong>, das vorkonfiguriert ist, um das ausgewählte Inferenzmodell zu unterstützen.</p><p>Darüber hinaus bietet das Feld <strong>native Unterstützung für die automatische Aufteilung langer Texte (Text Chunking)</strong>, wodurch große Texte in kleinere Abschnitte unterteilt werden können, von denen jeder seine eigene Einbettung hat, was die Suchgenauigkeit verbessert. Dies steigert die Produktivität enorm, insbesondere für Teams, die schnell Mehrwert liefern wollen, ohne sich mit der zugrundeliegenden Technik der semantischen Suche auseinandersetzen zu müssen.</p><p>Allerdings bietet <code>semantic_text</code> zwar Geschwindigkeit und Einfachheit, hat aber auch einige Einschränkungen. Es ermöglicht die Verwendung marktüblicher Modelle, sofern diese als Inferenzendpunkte in Elasticsearch verfügbar sind. <strong>Es unterstützt jedoch keine extern generierten Einbettungen</strong>, wie es mit dem Feld <code>dense_vector</code> möglich ist.</p><p>Wenn Sie mehr Kontrolle darüber benötigen, wie Vektoren generiert werden, Ihre eigenen Einbettungen verwenden möchten oder mehrere Felder für fortgeschrittene Strategien kombinieren müssen, bieten die Felder <code>dense_vector</code> und <code>sparse_vector</code> die Flexibilität, die für individuellere oder domänenspezifische Szenarien erforderlich ist.</p><h3>Wie man die Abfrage für semantischen Texttyp verwendet</h3><p>Vor <strong><code>semantic_text</code></strong> war es notwendig, je nach Art der Einbettung (dicht oder dünn) eine andere Abfrage zu verwenden. Für dünn besetzte Felder wurde eine <code>sparse_vector</code> -Abfrage verwendet, während für <code>dense_vector</code> -Felder KNN-Abfragen erforderlich waren.</p><p>Bei der semantischen Textsuche wird die Suche mithilfe der <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-semantic-query">semantischen Abfrage</a> durchgeführt, die automatisch den Abfragevektor generiert und ihn mit den Einbettungen der indizierten Dokumente vergleicht. Mit dem Typ <strong><code>semantic_text</code></strong> können Sie einen Inferenzendpunkt definieren, um die Abfrage einzubetten. Wenn jedoch kein Endpunkt angegeben wird, wird derselbe Endpunkt, der während der Indizierung verwendet wurde, auf die Abfrage angewendet.</p>{
  "query": {
    "semantic": {
      "field": "semantic_text_field",
      "query": "search text"
    }
  }
}<p>Um mehr zu erfahren, empfehle ich die Lektüre des Artikels <a href="https://www.elastic.co/search-labs/blog/semantic-search-simplified-semantic-text">Elasticsearch new semantic_text mapping: Simplifying semantic search</a>.</p><h2>Fazit</h2><p>Bei der Auswahl der Methode zum Mapping von Embeddings in Elasticsearch ist es wichtig zu verstehen, wie Sie die Vektoren generieren möchten und welchen Grad an Kontrolle Sie darüber benötigen. Wenn Sie Wert auf Einfachheit legen, ermöglicht das semantische Textfeld eine automatische und skalierbare semantische Suche und ist damit ideal für viele erste Anwendungsfälle. Wenn mehr Kontrolle, feinabgestimmte Leistung oder die Integration mit benutzerdefinierten Modellen erforderlich ist, bieten die dichten Vektorfelder und die dünnbesetzten Vektorfelder die notwendige Flexibilität.</p><p>Der ideale Feldtyp hängt von Ihrem Anwendungsfall, der verfügbaren Infrastruktur und dem Reifegrad Ihres Machine-Learning-Stacks ab. Am wichtigsten ist jedoch, dass Elastic die Werkzeuge bietet, um moderne und hochgradig anpassungsfähige Suchsysteme zu entwickeln.</p><h2>Referenzen</h2><ul><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-text.html">Semantischer Textfeldtyp</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/sparse-vector.html">Sparse Vektorfeldtyp</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html">Dichtes Vektorfeld</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-semantic-query.html">Semantische Anfrage</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-sparse-vector-query.html">Sparse Vektorabfrage</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html">kNN-Suche</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/semantic-search-simplified-semantic-text">Elasticsearch: Neues semantisches Textmapping: Vereinfachung der semantischen Suche</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/sparse-vector-embedding">Verständnis von spärlichen Vektoreinbettungen mit trainierten ML-Modellen</a></p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/mapping-embeddings-to-elasticsearch-field-types</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/mapping-embeddings-to-elasticsearch-field-types</guid>
    <category><![CDATA[Vektordatenbank]]></category>
    <category><![CDATA[Mappings]]></category>
    <dc:creator><![CDATA[Andre Luiz]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt72cd3c2601b22886/6a17083b0c4857259901a9dc/f98fdff837db55b466780c0bae672aa6f6c3a966-1200x628.png" length="0" type="image/png"/>
    <pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>