Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Présentation de la recherche dans BigQuery
Les index de recherche BigQuery vous permettent d'utiliser GoogleSQL pour trouver efficacement des éléments de données uniques répartis dans du texte non structuré et des données JSON semi-structurées, sans avoir à connaître les schémas de table à l'avance.
Avec les index de recherche, BigQuery fournit un système de stockage en colonnes et de recherche de texte performant sur une seule plate-forme. La recherche de lignes de données individuelles est ainsi plus efficace. L'analyse de journaux est un cas d'utilisation courant. Par exemple, vous pouvez identifier les lignes de données associées à un utilisateur pour les rapports sur le règlement général sur la protection des données (RGPD) ou trouver des codes d'erreur spécifiques dans une charge utile de type texte.
BigQuery stocke et gère vos index. Ainsi, lorsque les données deviennent disponibles dans BigQuery, vous pouvez les récupérer immédiatement avec la fonction SEARCH ou d'autres opérateurs et fonctions, comme les opérateurs égal (=), IN ou LIKE, ainsi que certaines fonctions de chaîne et JSON. Pour optimiser vos recherches, consultez les bonnes pratiques.
Cas d'utilisation
Les index de recherche BigQuery vous permettent d'effectuer les tâches suivantes :
Système de recherche, réseau ou journaux d'application stockés dans des tables BigQuery.
Identifier les éléments de données à supprimer afin de respecter des processus réglementaires.
Aide au dépannage pour les développeurs.
Effectuer des audits de sécurité.
Créer un tableau de bord nécessitant des filtres de recherche très sélectifs.
Recherche des correspondances exactes dans les données prétraitées.
Le traitement requis pour créer et actualiser vos index de recherche est sans frais lorsque la taille totale des tables indexées dans votre organisation est inférieure à la limite de votre région. Pour accepter l'indexation au-delà de cette limite, vous devez fournir votre propre réservation pour la gestion des jobs de gestion des index.
Les index de recherche entraînent des coûts de stockage lorsqu'ils sont actifs.
Vous pouvez trouver la taille de stockage de l'index dans la vue INFORMATION_SCHEMA.SEARCH_INDEXES.
Rôles et autorisations
Pour créer un index de recherche, vous devez disposer de l'autorisation IAM bigquery.tables.createIndex sur la table dans laquelle vous créez l'index. Pour supprimer un index de recherche, vous devez disposer de l'autorisation bigquery.tables.deleteIndex. Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour travailler avec les index de recherche :
Propriétaire de données BigQuery (roles/bigquery.dataOwner)
Éditeur de données BigQuery (roles/bigquery.dataEditor)
Administrateur BigQuery (roles/bigquery.admin)
Limites
Vous ne pouvez pas créer un index de recherche directement sur une vue ou une vue matérialisée, mais l'appel de la fonction SEARCH sur une vue d'une table indexée utilise l'index de recherche sous-jacent.
Vous ne pouvez pas créer d'index de recherche sur une table externe.
Si vous renommez une table de base après avoir créé un index de recherche, l'index devient non valide.
La fonction SEARCH est conçue pour les recherches de points. Les recherches floues, la correction des fautes de frappe, les caractères génériques et les autres types de recherches de documents ne sont pas disponibles.
Si l'index de recherche n'est pas encore à 100 % de la couverture, vous êtes toujours facturé pour tout le stockage d'index indiqué dans la vue INFORMATION_SCHEMA.SEARCH_INDEXES.
Les requêtes qui utilisent la fonction SEARCH ou qui sont optimisées par des index de recherche ne sont pas accélérées par BigQuery BI Engine.
Les index de recherche ne sont pas utilisés lorsque la table indexée est modifiée par une instruction LMD, mais ils peuvent être utilisés lorsque le prédicat optimisable par les index de recherche fait partie d'une sous-requête dans une instruction LMD.
Un index de recherche n'est pas utilisé dans la requête suivante :
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eBigQuery search indexes enable efficient searching of unstructured text and semi-structured JSON data using GoogleSQL, even without prior knowledge of table schemas.\u003c/p\u003e\n"],["\u003cp\u003eThese indexes facilitate row lookups, making them useful for tasks such as log analytics, GDPR compliance, and identifying specific error codes.\u003c/p\u003e\n"],["\u003cp\u003eBigQuery manages the indexes, allowing for immediate data retrieval through the \u003ccode\u003eSEARCH\u003c/code\u003e function and other operators like \u003ccode\u003e=\u003c/code\u003e, \u003ccode\u003eIN\u003c/code\u003e, or \u003ccode\u003eLIKE\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eUsing search indexes for indexed tables below a certain size limit in your region incurs no processing costs for building or refreshing the index, however storage costs for active indexes do apply.\u003c/p\u003e\n"],["\u003cp\u003eSearch indexes have limitations, they cannot be directly applied to views or materialized views, they do not allow fuzzy searching or typo correction, and aren't utilized during DML statements on the indexed table itself, among other limitations.\u003c/p\u003e\n"]]],[],null,["# Introduction to search in BigQuery\n==================================\n\n| **Note:** This feature may not be available when using reservations that are created with certain BigQuery editions. For more information about which features are enabled in each edition, see [Introduction to\n| BigQuery editions](/bigquery/docs/editions-intro).\n\nBigQuery search indexes let you use GoogleSQL to\nefficiently find\nunique data elements that are buried in unstructured text and semi-structured\nJSON data, without having to know the table schemas in advance.\n\nWith search indexes, BigQuery provides a powerful columnar store\nand text search in one platform, enabling efficient row lookups when you need to\nfind individual rows of data. A common use case is log analytics. For example,\nyou might want to identify the rows of data associated with a user for General\nData Protection Regulation (GDPR) reporting, or to find specific error codes in\na text payload.\n\nBigQuery stores and manages your indexes, so that when data becomes\navailable in BigQuery, you can immediately retrieve it with the\n[`SEARCH` function](/bigquery/docs/reference/standard-sql/search_functions#search)\nor [other operators and functions](/bigquery/docs/search#operator_and_function_optimization),\nsuch as the equal (`=`), `IN`, or `LIKE` operators and certain string and JSON\nfunctions. To optimize your searches, read about\n[best practices](/bigquery/docs/search#best_practices).\n| **Important:** Join the [Search discussion group](https://groups.google.com/g/bq-search) to post questions and comments, and to follow the latest updates.\n\nUse cases\n---------\n\nBigQuery search indexes help you perform the following tasks:\n\n- Search system, network, or application logs stored in BigQuery tables.\n- Identify data elements for deletion to comply with regulatory processes.\n- Support developer troubleshooting.\n- Perform security audits.\n- Create a dashboard that requires highly selective search filters.\n- Search pre-processed data for exact matches.\n\nFor more information, see\n[Create a search index](/bigquery/docs/search-index) and\n[Search with an index](/bigquery/docs/search).\n\nPricing\n-------\n\nThere is no charge for the processing required to build and refresh your search\nindexes when the total size of indexed tables in your organization is below\nyour region's\n[limit](/bigquery/quotas#index_limits). To support indexing beyond this limit,\nyou need to\n[provide your own reservation](/bigquery/docs/search-index#use_your_own_reservation)\nfor handling the index-management jobs.\nSearch indexes incur storage costs when they are active.\nYou can find the index storage size in the\n[`INFORMATION_SCHEMA.SEARCH_INDEXES` view](/bigquery/docs/information-schema-indexes).\n\nRoles and permissions\n---------------------\n\nTo create a search index, you need the\n[`bigquery.tables.createIndex` IAM permission](/bigquery/docs/access-control#bq-permissions)\non the table where you're creating the index. To drop a search index, you need\nthe `bigquery.tables.deleteIndex` permission. Each of the following predefined\nIAM roles includes the permissions that you need to work with\nsearch indexes:\n\n- BigQuery Data Owner (`roles/bigquery.dataOwner`)\n- BigQuery Data Editor (`roles/bigquery.dataEditor`)\n- BigQuery Admin (`roles/bigquery.admin`)\n\nLimitations\n-----------\n\n- You can't create a search index directly on a view or materialized view, but calling the [`SEARCH` function](/bigquery/docs/reference/standard-sql/search_functions#search) on a view of an indexed table makes use of the underlying search index.\n- You can't create a search index on an external table.\n- If you rename a table after you create a search index on it, the index becomes invalid.\n- The `SEARCH` function is designed for point lookups. Fuzzy searching, typo correction, wildcards, and other types of document searches are not available.\n- If the search index is not yet at 100% coverage, you are still charged for all index storage that is reported in the [`INFORMATION_SCHEMA.SEARCH_INDEXES` view](/bigquery/docs/information-schema-indexes).\n- Queries that use the `SEARCH` function or are optimized by search indexes are not accelerated by [BigQuery BI Engine](/bigquery/docs/bi-engine-intro).\n- Search indexes are not used when the indexed table is modified by a DML\n statement, but they can be used when the predicate that is optimizable by\n search indexes is part of a subquery in a DML statement.\n\n - A search index is not used in the following query:\n\n ```googlesql\n DELETE FROM my_dataset.indexed_table\n WHERE SEARCH(user_id, '123');\n ```\n - A search index can be used in the following query:\n\n ```googlesql\n DELETE FROM my_dataset.other_table\n WHERE\n user_id IN (\n SELECT user_id\n FROM my_dataset.indexed_table\n WHERE SEARCH(user_id, '123')\n );\n ```\n- Search indexes are not used when the query references [Materialized Views](/bigquery/docs/materialized-views-intro).\n\n- Search indexes are not used in a [multi-statement transaction query](/bigquery/docs/transactions).\n\n- Search indexes are not used in a [time-travel query](/bigquery/docs/time-travel).\n\nWhat's next\n-----------\n\n- Learn more about [creating a search index](/bigquery/docs/search-index).\n- Learn more about [searching in a table with a search index](/bigquery/docs/search)."]]