<?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/fr/search-labs/blog/category/mappings</link>
    </image>
    <link>https://www.elastic.co/fr/search-labs/blog/category/mappings</link>
    <atom:link href="https://www.elastic.co/fr/search-labs/rss/category/mappings.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[fr]]></language>
    <lastBuildDate>Mon, 21 Sep 2026 17:50:35 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Elasticsearch ES|QL permet d'effectuer des recherches full-text sur des données que vous n'avez jamais indexées]]></title>
    <description><![CDATA[Les fonctions MATCH et TO_TEXT permettent d'effectuer une recherche full-text sur des données que vous n'avez jamais indexées. Effectuez des recherches sur des colonnes calculées, des champs non mappés et des sources fédérées avec ES|QL.]]></description>
    <content:encoded><![CDATA[<p>La fonction MATCH d'ES|QL permet désormais d'effectuer des recherches full-text sur des données que vous n'avez jamais indexées, y compris les colonnes calculées, les champs non mappés, les chaînes assemblées à la volée et même les données fédérées stockées dans S3. La nouvelle fonction TO_TEXT indique à ES|QL de traiter n'importe quelle chaîne comme du texte analysable ; MATCH peut ainsi générer des tokens, normaliser la casse et mettre en correspondance des termes avec des valeurs qui n'existent que le temps de la requête. Il s'agit d'une véritable analyse, qui va bien au-delà de la correspondance de patterns via LIKE et RLIKE proposée par la plupart des moteurs de requête pour les chaînes non indexées. Disponible dès maintenant sur Elastic Cloud Serverless et en préversion technique dans Elasticsearch 9.5.</p><h2>Comment MATCH et TO_TEXT permettent la recherche full-text sur n'importe quelle expression ES|QL</h2><p>Commençons par une requête qui était impossible dans Elasticsearch 9.4, qui utilise <a href="https://www.elastic.co/docs/reference/query-languages/esql/commands/eval">la commande EVAL</a> :</p><p>Dans cet exemple, le résumé ne dispose d'aucune configuration de mapping ou d'analyseur. Il n'est pas non plus associé à un index inversé. Il n'existe que le temps de cette requête, mais il est tout de même possible d'effectuer des recherches dessus. Deux ajouts permettent d'y parvenir.</p><p>Premièrement, la fonction <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/search-functions/match">MATCH</a> accepte désormais n'importe quelle expression comme premier argument, et non plus seulement un champ mappé. Cela inclut les colonnes générées par EVAL ainsi que les résultats de fonctions utilisés directement dans l'expression. Cela englobe également les champs non mappés chargés directement depuis le document d'origine. De plus, tous les types de données habituellement acceptés par MATCH sont compatibles avec ce nouveau cas d'utilisation.</p><p>Deuxièmement, la nouvelle fonction <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/type-conversion-functions/to_text">TO_TEXT</a>, qui est la première fonction de conversion ES|QL qui produit une sortie de type texte. Jusqu'à présent, les colonnes de texte ne pouvaient provenir que de champs mappés indexés, et toutes les chaînes générées par les expressions ES|QL étaient des valeurs de mots-clés plutôt que de texte. Cette distinction est importante car MATCH traite les deux différemment : les valeurs de texte sont analysées, tandis que les valeurs de mots-clés sont comparées exactement, reproduisant ainsi le mécanisme par lequel une requête MATCH sur un champ de mot-clé indexé est réécrite en requête de terme. TO_TEXT(x) permet d'indiquer à ES|QL de <em>traiter cette chaîne comme du texte intégral</em>.</p><p>Cette fonctionnalité est disponible en préversion technique dans Elasticsearch 9.5, et, à ce titre, présente certaines limitations :</p><ul><li><p>Pour l'instant, elle se limite au filtrage. Une opération MATCH portant sur une expression ne contribue pas encore au score de pertinence ; seuls les matchs sur des champs indexés influencent ce score.</p></li><li><p>Les options de requête telles que la tolérance aux erreurs ne sont pas encore prises en charge lors de l'utilisation de MATCH sur une expression.</p></li><li><p>Le texte généré à l'exécution est analysé à l'aide de l'analyseur standard. Ce comportement n'est pas encore configurable.</p></li></ul><p>Ces limitations seront résolues prochainement.</p><h2>Pourquoi utiliser la recherche full-text plutôt que LIKE ou RLIKE dans ES|QL ?</h2><p>ES|QL disposait déjà de deux méthodes pour rechercher des chaînes de caractères sans index : LIKE (caractères génériques) et RLIKE (expressions régulières). Les deux fonctionnant sur n'importe quelle expression de chaîne, on peut donc se demander ce que MATCH apporte. La réponse est l'<a href="https://www.elastic.co/docs/manage-data/data-store/text-analysis">analyse</a>, une forme plus avancée de recherche qui utilise des techniques telles que la lemmatisation et les synonymes. Elle intègre également la gestion des mots vides.</p><p>LIKE effectue une simple correspondance de sous-chaîne, sans aucune compréhension des mots qui composent la chaîne. Supposons, par exemple, que vous recherchiez des messages de log à propos d'un renard :</p><p>La correspondance "Fox spotted near the henhouse" n'est pas détectée en raison de la majuscule, alors que la correspondance "Outfoxed by the competition", qui n'a aucun rapport avec un renard, est détectée. Le système échoue dans les deux cas : faux négatifs liés à la casse et faux positifs dus à des sous-chaînes incluses dans d'autres mots.</p><p>Les expressions régulières peuvent résoudre le problème de la casse, mais la gestion des limites de mots devient vite complexe. Quelque chose comme :</p><p>Et même là, ce n'est pas encore tout à fait ça. L'expression ne détecte pas le mot "fox" en fin de phrase s'il est suivi d'un point d'exclamation ou d'interrogation, et elle ne tient pas compte des tabulations, des guillemets ou des parenthèses. Chaque correction allonge le pattern, obligeant la personne suivante qui lira la requête à procéder à une ingénierie inverse pour comprendre ce qu'elle fait réellement.</p><p>MATCH résout le problème, car il fait passer aussi bien la requête que la valeur par un <a href="https://www.elastic.co/docs/reference/text-analysis/analyzer-reference">analyseur</a> qui découpe le texte à l'aide de tokens et le convertit en minuscules, puis compare les termes entre eux :</p><p>Cette requête correspondra à des valeurs comme "The quick brown fox" et "FOX spotted near the henhouse", mais pas à "Outfoxed by the competition" ou "FOXTROT protocol enabled", quelle que soit la ponctuation entourant les mots. Bien entendu, tout cela fonctionne également pour les requêtes comportant plusieurs termes, comme MATCH(TO_TEXT(message), "brown fox"), exactement comme on peut s'y attendre.</p><p>Des travaux sont en cours pour permettre l'utilisation des <a href="https://www.elastic.co/docs/reference/text-analysis/analysis-lang-analyzer">36 analyseurs linguistiques dédiés</a>, avec la prise en charge des langues naturelles sur des données jamais indexées ni mappées.</p><h2>Cas d'utilisation de la recherche full-text pour des données non indexées et non mappées</h2><p>Les exemples ci-dessus portaient sur des valeurs calculées à partir de <a href="https://www.elastic.co/docs/manage-data/data-store/mapping">champs mappés</a>. Les cas d'utilisation les plus intéressants de la fonction MATCH d'ES|QL appliquée à des expressions concernent des données qui, auparavant, n'étaient pas du tout interrogeables. Examinons quelques-uns de ces cas.</p><h3>Comment rechercher des champs non mappés dans ES|QL sans ajouter de mapping</h3><p>Il arrive parfois que l'on doive exclure un champ de nos mappings, comme une trace de pile détaillée ou une charge utile de requête brute. On peut même omettre un blob à déboguer. L'indexation de l'un de ces éléments consommerait de l'espace disque et de la mémoire pour chaque document, ce qui ne se justifierait pas pour un champ que l'on n'interroge peut-être qu'une fois par trimestre.</p><p>Cette décision a toujours été irrévocable, car les <a href="https://www.elastic.co/search-labs/blog/esql-unmapped-fields">champs non mappés</a> étaient totalement invisibles pour les requêtes. Dans Elasticsearch 9.5, vous pouvez utiliser SET unmapped_fields="load" pour permettre à ES|QL de charger directement les champs non mappés depuis le document source en tant que mots-clés. En enveloppant ensuite le résultat dans TO_TEXT, vous pouvez exécuter une recherche full-text sur ces champs :</p><p>Ici, stack_trace n'a jamais été mappé. Chaque valeur est récupérée depuis les documents d'origine et analysée à la volée ; la correspondance est établie ligne par ligne. C'est un travail conséquent, qui ne sera jamais aussi rapide qu'une recherche via un <a href="https://www.elastic.co/docs/manage-data/data-store/index-basics">index inversé</a>. Toutefois, ce champ que vous n'aviez pas indexé n'est plus impossible à interroger. Vous pouvez ainsi conserver un mapping léger pour les besoins courants tout en étant capable de répondre, le moment venu, à une question qui ne se pose qu'une fois par trimestre.</p><h3>Recherche full-text sur un champ de mots-clés sans réindexation</h3><p>Les champs de mots-clés offrent de nombreuses possibilités. Ils permettent une correspondance exacte, des agrégations rapides et le tri des données ; c'est pourquoi tant de champs sont finalement mappés de cette manière. Toutefois, le mapping est défini au moment de l'arrivée des données, et il est fréquent de se retrouver dans une situation où l'on souhaite exploiter ces données différemment de ce qui avait été prévu initialement. Par exemple, le champ product_name a peut-être été mappé en tant que mot-clé parce que les tableaux de bord s'appuyaient sur lui pour des agrégations. Or, après avoir accumulé une année de données produits, un utilisateur peut soudainement vouloir effectuer des recherches au sein même des valeurs de ce champ.</p><p>L'ancienne solution consiste à convertir le mapping en texte (ou à ajouter un champ multiple) et à tout réindexer. Cette opération est longue et coûteuse et, bien souvent, les utilisateurs ne veulent pas s'en donner la peine. La nouvelle solution se résume à un seul appel de fonction :</p><p>TO_TEXT convertit à la volée les valeurs de mot-clés en texte, permettant ainsi à MATCH de les analyser plutôt que de les comparer de manière exacte. Cela vous permet d'interroger un champ de mot-clé sans avoir à créer de mapping ni à réindexer le document source. Si cette recherche est amenée à devenir une requête courante, l'indexation du champ en tant que texte reste la solution idéale à long terme. Toutefois, TO_TEXT vous permet d'obtenir une réponse immédiate, sans travail supplémentaire.</p><h3>Recherche sur le même champ dans des index aux mappings différents</h3><p><a href="https://www.elastic.co/docs/reference/query-languages/esql/esql-multi-index">ES|QL peut couvrir plusieurs index</a>, et un même champ ne doit pas nécessairement présenter la même structure dans chacun d'eux. Lorsqu'un même champ possède des types différents selon les index, ES|QL le traite comme un type d'union, et une fonction de conversion résout le conflit. Prenons l'exemple d'un champ de message qui est de type texte dans le modèle d'index de cette année, alors qu'il était de type mot-clé dans celui de l'année précédente :</p><p>Chaque valeur est analysée au moment de la requête, qu'elle provienne de l'index texte ou de l'index mots-clés. Les valeurs de type mot-clé issues des anciens index sont découpées en tokens et converties en minuscules, tout comme les autres ; ainsi, la recherche "connection reset" permet de trouver "Connection RESET by peer", quel que soit l'index dans lequel la donnée est stockée.</p><p>Un autre cas intéressant est celui où un champ est mappé dans un seul index mais également présent (et non mappé) dans l'autre :</p><p>Il existe une nuance ici qu'il convient de souligner. Si error_details est mappé dans logs-2026 mais pas dans logs-2025, Elasticsearch ne peut pas déléguer cette requête à <a href="https://lucene.apache.org/">Lucene</a>, car les index où le champ n'est pas mappé ne renverraient silencieusement aucun résultat. Au lieu de cela, le planificateur détecte que le champ n'est potentiellement pas mappé et évalue l'intégralité de la clause MATCH ligne par ligne, quelle que soit la provenance des lignes. Vous n'avez pas besoin de savoir à quels index appartient le mapping de ce champ ; la requête répond simplement à la question.</p><h2>Comment ES|QL analyse le texte au moment de la requête sans index inversé</h2><p>Lorsque ES|QL planifie une opération MATCH sur une expression, il analyse la chaîne de requête une seule fois, au préalable, pour la transformer en un ensemble de termes. La manière dont chaque ligne est ensuite évaluée dépend du type de l'expression :</p><p><strong>Type d'expression</strong></p><p><strong>Traitement</strong></p><p><strong>Comportement correspondant</strong></p><p>texte (via TO_TEXT)</p><p>L'analyseur segmente la valeur à l'aide de tokens et la convertit en minuscules</p><p>Comparaison token par token ; une ligne correspond si un token correspond à un terme de requête quelconque (sémantique OU)</p><p>mot-clé, adresse IP, date, numérique</p><p>Aucune analyse ; constante de la requête convertie une seule fois vers le type natif</p><p>Comparaison exacte par ligne</p><p>Ces deux méthodes contournent entièrement Lucene et évaluent les valeurs ligne par ligne. Le chemin non textuel reproduit exactement le comportement d'une requête de correspondance lorsqu'elle est déléguée à Lucene pour ces types de champs ; la sémantique reste donc cohérente, que la requête utilise un index ou non.</p><p>Une recherche via un index inversé s'effectue au moment de l'ingestion et n'interagit jamais avec les documents non correspondants lors de l'exécution de la requête. À l'inverse, une opération MATCH effectuée à l'exécution réalise cette analyse au moment de la requête, pour chaque ligne traitée. La première méthode est rapide car le travail a déjà été accompli en amont, tandis que la seconde offre de la flexibilité, car les données n'ont pas besoin d'avoir été indexées au préalable.</p><h2>Prochaines évolutions de la recherche full-text dans ES|QL</h2><p>Tout ce qui est présenté dans cet article constitue la première étape d'une initiative plus vaste visant à permettre à la recherche ES|QL de fonctionner sur n'importe quelles données, et pas seulement sur celles indexées au préalable. Nous travaillons activement à lever les limitations mentionnées précédemment, et la roadmap va encore plus loin :</p><ul><li><p><strong>Calcul du score.</strong> Les correspondances évaluées à l'exécution contribueront au score (_score) ; vous pourrez ainsi effectuer un tri par pertinence, même si les données n'ont jamais été indexées.</p></li><li><p><strong>MATCH_PHRASE</strong><strong> sur les expressions.</strong> Déjà disponible dans Elastic Cloud Serverless et prochainement dans la Suite Elastic version 9.6.</p></li><li><p><strong>Analyseurs configurables.</strong> Prise en charge des analyseurs pour MATCH et MATCH_PHRASE sur les expressions, permettant l'utilisation d'analyseurs linguistiques, de la lemmatisation et de synonymes au moment de la requête.</p></li><li><p><strong>Options de correspondance.</strong> Des options telles que la tolérance et l'opérateur pour les correspondances à l'exécution.</p></li><li><p><strong>Recherche vectorielle.</strong> Génération d'embeddings par ligne et exécution de l'algorithme des k plus proches voisins (kNN) sur des expressions dense_vector évaluées à l'exécution, permettant d'étendre la recherche sémantique aux données non indexées.</p></li></ul><h2>Essayez dès aujourd'hui la recherche full-text ES|QL sur les expressions</h2><p>Vous pouvez essayer la recherche au moment de l'exécution dès maintenant. Elle est disponible dans Elastic Cloud Serverless, où les nouvelles fonctionnalités ES|QL sont déployées en priorité, et proposée en préversion technique dans Elasticsearch 9.5. Commencez par consulter la documentation de référence sur les <a href="https://www.elastic.co/docs/reference/query-languages/esql/functions-operators/search-functions">fonctions de recherche</a> ainsi que les limites actuelles sur la page dédiée aux <a href="https://www.elastic.co/docs/reference/query-languages/esql/limitations">limitations ES|QL</a>. Cette préversion technique est destinée à recueillir votre avis : si vous effectuez une recherche sur un élément qui n'a jamais été indexé et que le résultat vous surprend – en bien ou en mal –, <a href="https://www.elastic.co/fr/community">n'hésitez pas à nous en faire part</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[Comment afficher les champs d'un index Elasticsearch ?]]></title>
    <description><![CDATA[Apprenez à afficher les champs d'un index Elasticsearch à l'aide des API _mapping et _search, des sous-champs, de la _source synthétique et des champs d'exécution.]]></description>
    <content:encoded><![CDATA[<p>Dans cet article, nous verrons comment afficher les champs d'un index Elasticsearch. Cela peut être utile pour comprendre la structure de vos données, identifier des champs spécifiques et résoudre des problèmes. Nous aborderons les sujets suivants :</p><ol><li><p>Utilisation de l'API <code>_mapping</code> pour récupérer des informations sur les champs</p></li><li><p>Utilisation de l'API <code>_search</code> pour afficher les valeurs des champs</p></li><li><p>Affichage des sous-champs</p></li><li><p>Synthetic _source</p></li><li><p>Champs d'exécution</p></li></ol><h2>1. Utilisation de l'API _mapping pour récupérer des informations sur les champs</h2><p>L'API <code>_mapping</code> vous permet de récupérer la définition du mappage pour un ou plusieurs index. Il s'agit d'informations sur les champs, leurs types de données et d'autres propriétés. Pour récupérer le mappage d'un index spécifique, utilisez la requête suivante :</p>GET /&lt;index_name&gt;/_mapping<p>Par exemple, si vous avez un index nommé <code>my_index</code>, vous pouvez récupérer son mapping avec la requête suivante :</p>GET /my_index/_mapping<p>La réponse comprendra la définition du mappage pour l'index, qui contient des informations sur les champs et leurs propriétés.</p><p>Il est également possible de récupérer la cartographie d'un champ spécifique. Cela peut s'avérer utile si votre cartographie est assez vaste et que vous souhaitez vous concentrer sur un domaine spécifique. Pour récupérer la correspondance d'un champ spécifique, utilisez la requête suivante :</p>GET /my_index/_mapping/field/my_field<p>Vous pouvez également récupérer les correspondances de plusieurs champs en séparant leurs noms par des virgules, comme dans la requête suivante :</p>GET /my_index/_mapping/field/my_field_1,my_field_2,my_field_3<h2>2. Utilisation de l'API _search pour afficher les valeurs des champs</h2><p>Pour afficher les valeurs des champs d'un index Elasticsearch, vous pouvez utiliser l'API <code>_search</code>. L'API <code>_search</code> vous offre plusieurs moyens de contrôler les champs renvoyés ; les deux principaux sont les suivants :</p><ol><li><p><strong><code>_source</code></strong>: Le champ <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-source-field"><code>_source</code></a> contient le corps du document JSON original tel qu'il a été indexé, y compris les modifications apportées par les pipelines d'ingestion ou les étapes de prétraitement. Pour afficher des champs spécifiques du document source, il faut mettre en œuvre le filtrage de la source, comme nous le verrons ci-dessous.</p></li><li><p><strong><code>fields</code></strong>: Le paramètre <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields"><code>fields</code></a> vous permet d'extraire des champs spécifiques de vos documents lors d'une recherche, sur la base du mappage de l'index. Contrairement à <code>_source</code>, <code>fields</code> peut également renvoyer des valeurs provenant de champs stockés, de valeurs documentaires ou de champs d'exécution sans faire référence à <code>_source</code>, bien que pour les champs standard sans valeurs documentaires ou paramètres stockés, il se réfère à <code>_source</code>. Cela peut apporter de nombreux avantages, notamment en termes de performances, comme nous le verrons ci-dessous.</p></li></ol><h3>Utilisation du champ _source</h3><p>Par défaut, l'API<code> _search</code> renvoie le champ <code>_source</code>, qui contient le document JSON original qui a été indexé. Pour afficher des champs spécifiques, vous pouvez ajouter des filtres dans le paramètre <code>_source </code>de la demande de recherche ; c'est ce qu'on appelle le filtrage à la source.</p><p>Voici un exemple de demande de recherche qui renvoie les valeurs des champs <code>title </code>et <code>author</code> pour les documents de l'index <code>my_index</code>:</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["title", "author"]
}<p>Dans cet exemple, le paramètre <code>_source</code> spécifie les champs à renvoyer.</p><p>Si vous avez besoin d'encore plus de contrôle, vous pouvez utiliser les propriétés <code>includes</code> et <code>excludes </code>de l'objet <code>_source</code>. Par exemple, la requête ci-dessous renvoie le champ de premier niveau <code>title</code> et tous les sous-champs de <code>author</code> à l'exception de <code>author.description</code>.</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "_source": {
     “includes”: [“title”, “author.*],
     “excludes”: [“author.description”]
  }
}<p>Dans cet exemple, nous utilisons le modèle <code>author.* </code>pour récupérer tous les sous-champs directs de l'objet <code>author </code>. Nous excluons ensuite explicitement <code>author.description </code>afin que seuls les autres champs relatifs à l'auteur soient renvoyés. Notez que cela n'améliore pas les performances, puisqu'il faut toujours charger et analyser la source JSON, mais cela permet de réduire la taille de la réponse envoyée sur le réseau.</p><h3>Utilisation du paramètre champs</h3><p>Vous pouvez utiliser le paramètre <code>fields</code> pour filtrer les champs renvoyés dans la réponse de recherche. L'utilisation de <code>fields</code> par rapport à <code>_source</code> présente plusieurs avantages, notamment</p><ul><li><p><strong>Amélioration des performances : </strong><code>fields </code>peut renvoyer des valeurs directement à partir de <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-store">champs stockés</a> ou de <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/doc-values">valeurs de documents</a> sans avoir à charger l'intégralité du site <code>_source</code>, ce qui réduit la taille de la charge utile de la réponse.</p></li><li><p><strong>Sortie formatée :</strong> Pour les champs standard,<code> fields</code> peut se référer à <code>_source</code> pour récupérer les valeurs, mais il s'appuie sur le mappage de l'index pour formater correctement la sortie, comme les dates formatées, afin de les rendre cohérentes avec ce qui est utilisé pour les agrégations et les tris.</p></li><li><p><strong>Accès aux champs d'exécution :</strong> <code>fields</code> peut renvoyer des champs d'exécution qui n'existent pas sur le site original <code>_source</code>.</p></li><li><p>D'autres avantages peuvent être trouvés <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#search-fields-param">ici.</a></p></li></ul><p>Par exemple, pour obtenir uniquement les champs <code>title</code> et <code>author</code> dans l'index <code>my_index</code>, vous pouvez utiliser la requête de recherche suivante :</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author"],
  "_source": false
}<p>Dans la requête ci-dessus, nous attribuons la valeur false au champ <code>_source </code>afin de ne pas renvoyer le document source. Cela peut réduire considérablement la taille de la charge utile de la réponse, mais n'oubliez pas que cela ne fonctionne que si les champs <code>title</code> et <code>author</code> sont de type <code>keyword </code>, pour lesquels <code>doc_values</code> est activé par défaut. Si le champ n'a pas été activé par <code>doc_values</code> et que <code>_source</code> a été défini sur false, Elasticsearch n'aura aucun moyen de les récupérer et ils seront ignorés dans la réponse.</p><p>Il est important de noter que la réponse <code>fields</code> renvoie toujours un tableau de valeurs pour chaque champ, même s'il n'y a qu'une seule valeur. Cela est dû au fait qu'Elasticsearch n'a pas de type de tableau dédié, et que tout champ peut avoir plusieurs valeurs. Pour plus d'informations sur les tableaux dans Elasticsearch, cliquez <a href="http://elastic.co/docs/reference/elasticsearch/mapping-reference/array">ici.</a></p><h3>Autres moyens d'extraire des champs</h3><p>Bien que l'extraction de champs à l'aide de <code>_source</code> ou <code>fields</code> soit la méthode recommandée, il existe d'autres méthodes pour des cas d'utilisation spécifiques, comme par exemple :</p><p><strong>Champs de valeur du document :</strong> Si vous souhaitez éviter <code>_source</code>, vous pouvez effectuer une recherche en utilisant le paramètre <a href="https://www.elastic.co/docs/reference/elasticsearch/rest-apis/retrieve-selected-fields#docvalue-fields"><code>docvalue_fields</code></a> . Doc values stocke les mêmes valeurs de champ que <code>_source</code> mais dans une structure de données sur disque, optimisée pour les tris et les agrégations.</p><p>Comme il s'agit d'une valeur distincte des valeurs stockées sur <code>_source</code>, vous pouvez demander des champs spécifiques sans avoir à charger l'ensemble du site <code>_source</code>. Cette option est utile si vous interrogez des documents volumineux, mais que vous n'avez besoin que de quelques petits champs prenant en charge des valeurs de documents. Un autre cas d'utilisation de <code>docvalue_fields </code>est celui où vous souhaitez utiliser un formatage personnalisé pour les champs <code>date</code> et <code>numeric</code>, comme nous le verrons dans l'exemple ci-dessous.</p><p>Notez que cela ne fonctionne que pour les champs pour lesquels vous avez activé <code>doc_values</code> ou pour les types de champs pour lesquels cette option est activée par défaut, tels que <code>keyword</code>, <code>date</code>, les types numériques et <code>boolean</code>, et non pour <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/text"><code>text</code></a> ou <a href="https://www.elastic.co/docs/reference/elasticsearch/plugins/mapper-annotated-text-usage"><code>annotated_text</code></a>.</p><p>Dans cet exemple, nous utilisons le paramètre <code>docvalue_fields</code> pour récupérer les champs <code>title</code>, <code>author</code> et <code>published</code> sans charger le document <code>_source</code> complet :</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "docvalue_fields": [
    "title",
    "author",
    {
      "field": "published",
      "format": "epoch_millis"
    }
  ],
  "_source": false
}<p>Lorsque cette requête est exécutée, Elasticsearch récupère les valeurs directement à partir de son magasin en colonnes sur disque au lieu de référencer le site <code>_source </code>pour chaque document. Le champ <code>published</code> est retourné avec le format <code>epoch_millis</code> au lieu du format par défaut, grâce au paramètre <code>format</code> fourni dans la requête.</p><p><strong>Champs stockés :</strong> Si vous avez explicitement marqué des champs spécifiques comme étant <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/mapping-store">stockés</a> dans le mappage, vous pouvez utiliser le paramètre <code>stored_fields</code> pour filtrer ces champs. C'est utile si vous voulez des réponses légères avec seulement ces champs spécifiques ou pour les champs que vous avez délibérément stockés pour les retrouver plus tard. Il est stocké séparément de <code>_source</code>, de sorte que cette méthode est également utile pour éviter de devoir charger <code>_source</code>.</p><p>Il est important de noter que cette option est désactivée par défaut et qu'elle n'est généralement pas recommandée. Utilisez plutôt le filtrage des sources pour renvoyer certains sous-ensembles du document source original.</p><p>Dans l'exemple de requête ci-dessous, nous utilisons le paramètre <code>stored_fields</code> pour récupérer le champ <code>summary</code>, dont la configuration de mappage d'index est "<code>store”: true</code>.</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "stored_fields": ["summary"]
}<p>Lorsque cette requête est exécutée, Elasticsearch vérifie si ce champ a été marqué par <code>”store”: true</code>, s'il ne le trouve pas, il l'ignore complètement.</p><h2>3. Affichage des sous-champs</h2><p>Si votre index contient des sous-champs, vous pouvez utiliser la notation point pour spécifier le chemin d'accès au champ dans le paramètre <code>fields</code>. Notez que les sous-champs sont différents du <a href="https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/nested">type de champ imbriqué</a>. Par exemple, si vous avez un sous-champ nommé <code>address.city</code>, vous pouvez l'inclure dans la réponse de recherche comme suit :</p>GET /my_index/_search
{
  "query": {
    "match_all": {}
  },
  "fields": ["title", "author", "address.city"],
  "_source": false
}<p>Dans cet exemple, la réponse de la recherche comprendra les valeurs des champs <code>title</code>, <code>author</code> et <code>address.city</code>.</p><h2>4. Synthétique _source</h2><p>Si vous souhaitez conserver la fonctionnalité de<code> _source</code> tout en économisant de l'espace disque, vous avez la possibilité d'utiliser le site synthétique <code>_source</code> dans votre mappage d'index. <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> est une fonctionnalité qui permet à Elasticsearch de reconstruire <code>_source</code> à partir de données existantes telles que des champs stockés et des valeurs de documents, même lorsque <code>_source</code> est désactivé. Cela vous permet d'économiser beaucoup d'espace de stockage au prix d'une vitesse légèrement inférieure au moment de l'interrogation, car la reconstruction se fait à la volée. Activez cette fonction en utilisant les valeurs ci-dessous dans vos paramètres d'index :</p>PUT idx
{
  "settings": {
    "index": {
      "mapping": {
        "source": {
          "mode": "synthetic"
        }
      }
    }
  }
}<p>Parmi les avantages de l'utilisation de la version synthétique de <code>_source </code>, citons : l'affichage complet du document lors de l'utilisation de l'API <code>_search</code>, le filtrage des sources et la compatibilité avec d'autres fonctionnalités et outils tels que Kibana qui s'attendent à ce que <code>_source</code> soit disponible, tout en évitant d'avoir à stocker le document <code>_source</code> dans son intégralité.</p><h2>5. Champs d'exécution</h2><p>Les champs <a href="https://www.elastic.co/docs/manage-data/data-store/mapping/runtime-fields">d'exécution</a> vous permettent de définir des champs scriptés au moment de la requête ou dans votre mappage d'index sous un bloc d'exécution. Ces champs ne sont jamais indexés, de sorte que l'ajout d'un champ d'exécution n'augmente pas la taille de l'index mais n'apparaîtra jamais dans <code>_source</code>. Les champs d'exécution définis dans le mappage sont persistants et disponibles pour toutes les requêtes, tandis que les champs d'exécution définis au moment de la requête sont temporaires et ne sont disponibles que dans cette requête de recherche.</p><p>Le principal avantage de l'utilisation des champs d'exécution est la possibilité d'ajouter des champs aux documents après les avoir ingérés, ce qui simplifie vos décisions en matière de mappage. Les champs d'exécution sont également très utiles pour enrichir vos documents avec des valeurs qui n'existent pas dans le document original mais qui sont générées à l'aide d'un script, comme le formatage d'une chaîne de caractères ou le calcul d'un score.</p><p>Il convient également de noter que les champs d'exécution peuvent nuire aux performances, car un script devra être exécuté pour chaque document de l'ensemble des résultats. Pour <a href="https://www.elastic.co/docs/manage-data/data-store/mapping/retrieve-runtime-field">récupérer un champ d'exécution</a>, vous pouvez également utiliser le paramètre <code>fields</code> de l'API <code>_search</code>.</p><h2>Conclusion</h2><p>L'affichage des champs d'un index Elasticsearch peut aller de la simple récupération des valeurs à l'aide du mappage d'index ou de <code>_source</code>, à des méthodes plus avancées utilisant <code>fields</code>, <code>docvalue_fields</code>, ou des champs d'exécution pour un meilleur contrôle et une plus grande efficacité. Il est essentiel de comprendre les compromis entre les différentes méthodes pour optimiser vos expériences de recherche. Qu'il s'agisse d'optimiser les charges utiles, d'enrichir des documents ou d'utiliser le site synthétique <code>_source</code> pour économiser de l'espace de stockage, Elasticsearch vous offre de nombreux outils et fonctionnalités pour trouver les données dont vous avez besoin, de la manière dont vous en avez besoin. Ces techniques peuvent vous aider à comprendre la structure de vos données, à identifier des champs spécifiques et à résoudre des problèmes.</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[Indexer des données]]></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[Mapping embeddings to Elasticsearch field types : semantic_text, dense_vector, sparse_vector]]></title>
    <description><![CDATA[Discuter comment et quand utiliser semantic_text, dense_vector, ou sparse_vector, et comment ils sont liés à la génération d'embedding.]]></description>
    <content:encoded><![CDATA[<p>L'utilisation d'enchâssements pour améliorer la pertinence et la précision de la recherche d'informations s'est considérablement développée au fil des ans. Des outils comme Elasticsearch ont évolué pour prendre en charge ce type de données grâce à des types de champs spécialisés tels que les vecteurs denses, les vecteurs épars et le texte sémantique. Cependant, pour obtenir de bons résultats, il est essentiel de comprendre comment faire correspondre correctement les embeddings aux types de champs Elasticsearch disponibles : <code>semantic_text</code>, <code>dense_vector</code>, et <code>sparse_vector</code>.</p><p>Dans cet article, nous examinerons ces types de champs, quand utiliser chacun d'entre eux et comment ils sont liés à la génération d'encarts et aux stratégies d'utilisation, à la fois lors de l'indexation et de l'interrogation.</p><h2>Type de vecteur dense</h2><p>Le type de champ <code>dense_vector</code> dans Elasticsearch est utilisé pour stocker des vecteurs denses, qui sont des représentations numériques de données telles que du texte, des images et de l'audio, où presque toutes les dimensions sont pertinentes... Ces vecteurs sont générés à l'aide de modèles d'intégration fournis par des plateformes telles que OpenAI, Cohere ou Hugging Face, et sont conçus pour capturer la signification sémantique globale des données, même si elles ne partagent pas de termes exacts avec d'autres documents.</p><p>Dans Elasticsearch, les vecteurs denses peuvent avoir jusqu'à 4096 dimensions en fonction du modèle utilisé. Par exemple, le modèle all-MiniLM-L6-v2 génère des vecteurs de 384 dimensions, tandis que le modèle text-embedding-ada-002 d'OpenAI produit des vecteurs de 1536 dimensions.</p><p>Le champ <code>dense_vector</code> est généralement adopté comme type par défaut pour stocker ce type d'intégration lorsqu'un plus grand contrôle est nécessaire, comme l'utilisation de vecteurs pré-générés, l'application de fonctions de similarité personnalisées ou l'intégration avec des modèles externes.</p><h3>Quand et pourquoi utiliser le type dense_vector ?</h3><p>Les vecteurs denses sont excellents pour capturer la similarité sémantique entre des phrases, des paragraphes ou des documents entiers. Ils fonctionnent très bien lorsque l'objectif est de comparer le sens global des textes, même s'ils ne partagent pas les mêmes termes.</p><p>Le champ de vecteurs denses est idéal lorsque vous disposez déjà d'un pipeline externe de génération d'incrustations utilisant des modèles fournis par des plateformes telles que OpenAI, Cohere ou Hugging Face et que vous souhaitez uniquement stocker et interroger ces vecteurs manuellement. Ce type de champ offre une grande compatibilité avec les modèles d'intégration et une souplesse totale en matière de génération et d'interrogation, ce qui permet de contrôler la manière dont les vecteurs sont produits, indexés et utilisés lors de la recherche.</p><p>En outre, il prend en charge différentes formes de recherche sémantique, avec des requêtes telles que k-NN ou script_score pour les cas où il est nécessaire d'ajuster la logique de classement. Ces possibilités font du vecteur dense un outil idéal pour des applications telles que RAG (Retrieval-Augmented Generation), les systèmes de recommandation et les recherches personnalisées basées sur la similarité.</p><p>Enfin, le champ vous permet de personnaliser la logique de pertinence, en utilisant des fonctions telles que <code>cosineSimilarity</code>, <code>dotProduct</code> ou <code>l2norm</code> pour adapter le classement aux besoins de votre cas d'utilisation. </p><p>Les vecteurs denses restent la meilleure option pour ceux qui ont besoin de flexibilité, de personnalisation et de compatibilité avec des cas d'utilisation avancés comme ceux mentionnés ci-dessus.</p><h3>Comment utiliser la requête pour un type de vecteur dense ?</h3><p>Les recherches sur les champs définis comme <strong><code>dense_vector</code></strong> utilisent la requête des k-voisins les plus proches. Cette requête est chargée de trouver les documents dont le vecteur dense est le plus proche du vecteur de la requête. Vous trouverez ci-dessous un exemple d'application d'une requête k-NN à un champ vectoriel dense :</p>{
  "knn": {
    "field": "my_dense_vector",
    "k": 10,
    "num_candidates": 50,
    "query_vector": [/* vector generated by model */]
  }
}<p>Outre la requête k-NN, s'il est nécessaire de personnaliser la notation des documents, il est également possible d'utiliser la requête script_score, en la combinant avec des fonctions de comparaison vectorielle telles que <strong>cosineSimilarity, dotProduct ou l2norm</strong> pour calculer la pertinence d'une manière plus contrôlée. Voir l'exemple :</p>{
"script_score": {
    "query": { "match_all": {} },
    "script": {
      "source": "cosineSimilarity(params.query_vector,
'my_dense_vector') + 1.0",
      "params": {
        "query_vector": [/* vector */]
      }
    }
  }
}<p>Si vous souhaitez aller plus loin, je vous recommande d'explorer l'article <a href="https://www.elastic.co/search-labs/blog/vector-search-set-up-elasticsearch">Comment configurer la recherche vectorielle dans Elasticsearch.</a></p><p></p><h2>Type de vecteur épars</h2><p>Le type de champ <strong><code>sparse_vector</code></strong> est utilisé pour stocker des vecteurs épars, qui sont des représentations numériques où la plupart des valeurs sont nulles et où seuls quelques termes ont des poids significatifs. Ce type de vecteur est courant dans les modèles basés sur les termes tels que SPLADE ou ELSER (Elastic Learned Sparse EncodeR).</p><h3>Quand et pourquoi utiliser un type de vecteur peu dense ?</h3><p>Les vecteurs épars sont idéaux lorsque vous avez besoin d'une recherche plus précise en termes lexicaux, sans sacrifier l'intelligence sémantique. Ils représentent le texte sous forme de paires jeton/valeur, en ne mettant en évidence que les termes les plus pertinents avec les poids associés, ce qui permet de gagner en clarté, en contrôle et en efficacité.</p><p>Ce type de champ est particulièrement utile lorsque vous générez des vecteurs basés sur des termes, comme dans les modèles ELSER ou SPLADE, qui attribuent des poids différents à chaque mot en fonction de son importance relative dans le texte.</p><p>Pour les cas où vous souhaitez contrôler l'influence de mots spécifiques dans la requête, les types de vecteurs épars vous permettent d'ajuster manuellement le poids des termes afin d'optimiser le classement des résultats.</p><p>Parmi les principaux avantages, citons la transparence de la recherche, puisqu'il est possible de comprendre clairement pourquoi un document a été jugé pertinent, et l'efficacité du stockage, puisque seuls les jetons dont la valeur n'est pas nulle sont enregistrés, contrairement aux vecteurs denses qui stockent toutes les dimensions.</p><p>En outre, les vecteurs épars sont le complément idéal des stratégies de recherche hybrides et peuvent même être combinés avec des vecteurs denses pour associer la précision lexicale à la compréhension sémantique.</p><h3>Comment utiliser l'interrogation pour le type de vecteur épars ?</h3><p>La requête <strong><code>sparse_vector</code></strong> vous permet de rechercher des documents sur la base d'un vecteur de requête au format jeton/valeur. Vous trouverez ci-dessous un exemple de requête :</p>{
  "query": {
    "sparse_vector": {
      "field": "field_sparse",
      "query_vector": {
        "token1": 0.6,
        "token2": 0.2,
        "token3": 0.9
      }
    }
  }
}<p>Si vous préférez utiliser un modèle formé, il est possible d'utiliser un point final d'inférence qui transforme automatiquement le texte de la requête en un vecteur peu dense :</p>{
  "query": {
    "sparse_vector": {
      "field": "field_sparse",
      "inference_id": "the inference ID to produce the token/weights",
      "query": "search text"
    }
  }
}<p>Pour approfondir ce sujet, je vous suggère de lire <a href="https://www.elastic.co/search-labs/blog/sparse-vector-embedding">Understanding sparse vector embeddings with trained ML models (Comprendre les encastrements de vecteurs épars avec des modèles ML formés).</a></p><h2>Type de texte sémantique</h2><p>Le type de champ <strong><code>semantic_text</code></strong> est le moyen le plus simple et le plus direct d'utiliser la recherche sémantique dans Elasticsearch. Il gère automatiquement la génération de l'intégration, à la fois au moment de l'indexation et de l'interrogation, par le biais d'un point final d'inférence. Cela signifie que vous n'avez pas à vous soucier de générer ou de stocker des vecteurs manuellement.</p><h3>Quand et pourquoi utiliser le texte sémantique ?</h3><p>Le champ <code>semantic_text</code> est idéal pour ceux qui veulent commencer avec un minimum d'effort technique et sans avoir à manipuler les vecteurs manuellement. Ce champ automatise des étapes telles que la génération de l'encastrement et le mappage de la recherche vectorielle, ce qui rend l'installation plus rapide et plus pratique.</p><p>Vous devriez envisager d'utiliser <code>semantic_text</code> si vous appréciez la <strong>simplicité et l'abstraction</strong>, car il <strong>élimine la complexité de la configuration manuelle des mappings, de la génération d'embedding et des pipelines d'ingestion</strong>. Il suffit de sélectionner le modèle d'inférence et Elasticsearch s'occupe du reste.</p><p>Parmi les principaux avantages, citons la <strong>génération automatique de l'intégration,</strong> effectuée à la fois pendant l'indexation et l'interrogation, et le <strong>mappage prêt à l'emploi</strong>, qui est préconfiguré pour prendre en charge le modèle d'inférence sélectionné.</p><p>En outre, le champ offre une <strong>prise en charge native du découpage automatique des textes longs (text chunking</strong>), ce qui permet de diviser les textes volumineux en passages plus petits, chacun ayant sa propre intégration, ce qui améliore la précision de la recherche. La productivité s'en trouve grandement améliorée, en particulier pour les équipes qui souhaitent fournir rapidement de la valeur ajoutée sans avoir à s'occuper de l'ingénierie sous-jacente de la recherche sémantique.</p><p>Cependant, bien que <code>semantic_text</code> offre rapidité et simplicité, cette approche présente certaines limites. Il permet d'utiliser des modèles standard du marché, pour autant qu'ils soient disponibles en tant que points de terminaison d'inférence dans Elasticsearch. Cependant, <strong>il ne prend pas en charge les encastrements générés de l'extérieur</strong>, comme c'est le cas avec le champ <code>dense_vector</code>.</p><p>Si vous avez besoin de plus de contrôle sur la manière dont les vecteurs sont générés, si vous souhaitez utiliser vos propres incorporations ou si vous devez combiner plusieurs champs pour des stratégies avancées, les champs <code>dense_vector</code> et <code>sparse_vector</code> offrent la flexibilité nécessaire pour des scénarios plus personnalisés ou spécifiques à un domaine.</p><h3>Comment utiliser la requête pour le type de texte sémantique ?</h3><p>Avant <strong><code>semantic_text</code></strong>, il était nécessaire d'utiliser une requête différente selon le type d'intégration (dense ou éparse). Une requête <code>sparse_vector</code> a été utilisée pour les champs peu denses, tandis que les champs <code>dense_vector</code> ont nécessité des requêtes KNN.</p><p>Avec le type de texte sémantique, la recherche est effectuée à l'aide de la <a href="https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-semantic-query">requête sémantique</a>, qui génère automatiquement le vecteur de la requête et le compare avec les enchâssements des documents indexés. Le type <strong><code>semantic_text</code></strong> vous permet de définir un point final d'inférence pour intégrer la requête, mais si aucun n'est spécifié, le même point final que celui utilisé lors de l'indexation sera appliqué à la requête.</p>{
  "query": {
    "semantic": {
      "field": "semantic_text_field",
      "query": "search text"
    }
  }
}<p>Pour en savoir plus, je vous propose de lire l'article <a href="https://www.elastic.co/search-labs/blog/semantic-search-simplified-semantic-text">Elasticsearch new semantic_text mapping : Simplifier la recherche sémantique</a>.</p><h2>Conclusion</h2><p>Lors du choix de la méthode de mappage des embeddings dans Elasticsearch, il est essentiel de comprendre comment vous souhaitez générer les vecteurs et quel est le niveau de contrôle dont vous avez besoin sur ceux-ci. Si vous recherchez la simplicité, le champ de texte sémantique permet une recherche sémantique automatique et évolutive, ce qui le rend idéal pour de nombreux cas d'utilisation initiaux. Lorsqu'un contrôle plus poussé, des performances plus fines ou une intégration avec des modèles personnalisés sont nécessaires, les champs de vecteurs denses et de vecteurs clairsemés offrent la flexibilité nécessaire.</p><p>Le type de champ idéal dépend de votre cas d'utilisation, de l'infrastructure disponible et de la maturité de votre pile d'apprentissage automatique. Plus important encore, Elastic offre les outils nécessaires pour construire des systèmes de recherche modernes et hautement adaptables.</p><h2>Références</h2><ul><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/semantic-text.html">Type de champ texte sémantique</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/sparse-vector.html">Type de champ vectoriel épars</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/dense-vector.html">Type de champ vectoriel dense</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-semantic-query.html">Requête sémantique</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-sparse-vector-query.html">Requête sur les vecteurs épars</a></p></li><li><p><a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/knn-search.html">Recherche kNN</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/semantic-search-simplified-semantic-text">Nouveau mappage semantic_text d'Elasticsearch : Simplifier la recherche sémantique</a></p></li><li><p><a href="https://www.elastic.co/search-labs/blog/sparse-vector-embedding">Comprendre les encastrements de vecteurs épars à l'aide de modèles ML entraînés</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[Base vectorielle]]></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>