Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Introduzione alla ricerca in BigQuery
Gli indici di ricerca BigQuery ti consentono di utilizzare GoogleSQL per trovare in modo efficiente elementi di dati unici nascosti in testi non strutturati e dati JSON semi-strutturati, senza dover conoscere in anticipo gli schemi delle tabelle.
Con gli indici di ricerca, BigQuery fornisce un potente archivio a colonne
e la ricerca di testo in un'unica piattaforma, consentendo ricerche efficienti di righe quando devi
trovare singole righe di dati. Un caso d'uso comune è l'analisi dei log. Ad esempio,
potresti voler identificare le righe di dati associate a un utente per i report del Regolamento
generale sulla protezione dei dati (GDPR) o per trovare codici di errore specifici in
un payload di testo.
BigQuery archivia e gestisce gli indici, in modo che quando i dati diventano disponibili in BigQuery, tu possa recuperarli immediatamente con la funzione SEARCH o con altri operatori e funzioni, come gli operatori di uguaglianza (=), IN o LIKE e alcune funzioni di stringa e JSON. Per ottimizzare le tue ricerche, leggi le
best practice.
Casi d'uso
Gli indici di ricerca di BigQuery ti aiutano a svolgere le seguenti attività:
Cerca i log di sistema, di rete o delle applicazioni archiviati nelle tabelle BigQuery.
Identifica gli elementi di dati da eliminare per rispettare le procedure normative.
Supportare la risoluzione dei problemi degli sviluppatori.
Eseguire audit della sicurezza.
Crea una dashboard che richiede filtri di ricerca altamente selettivi.
Cerca corrispondenze esatte nei dati pre-elaborati.
Non è previsto alcun addebito per l'elaborazione necessaria per creare e aggiornare gli indici di ricerca quando le dimensioni totali delle tabelle indicizzate nella tua organizzazione sono inferiori al limite della tua regione. Per supportare l'indicizzazione oltre questo limite,
devi
fornire la tua prenotazione
per la gestione dei job di gestione degli indici.
Gli indici di ricerca comportano costi di archiviazione quando sono attivi.
Puoi trovare le dimensioni dello spazio di archiviazione dell'indice nella
visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES.
Ruoli e autorizzazioni
Per creare un indice di ricerca, devi disporre dell'autorizzazione IAM
bigquery.tables.createIndex
per la tabella in cui stai creando l'indice. Per eliminare un indice di ricerca, devi disporre
dell'autorizzazione bigquery.tables.deleteIndex. Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni necessarie per lavorare con gli indici di ricerca:
BigQuery Data Owner (roles/bigquery.dataOwner)
Editor dati BigQuery (roles/bigquery.dataEditor)
Amministratore BigQuery (roles/bigquery.admin)
Limitazioni
Non puoi creare un indice di ricerca direttamente su una vista o una vista materializzata, ma
chiamando la
funzione SEARCH
su una vista di una tabella indicizzata viene utilizzato l'indice di ricerca sottostante.
Non puoi creare un indice di ricerca in una tabella esterna.
Se rinomini una tabella dopo aver creato un indice di ricerca, l'indice
diventa non valido.
La funzione SEARCH è progettata per le ricerche puntuali. La ricerca approssimativa,
la correzione degli errori di battitura, i caratteri jolly e altri tipi di ricerche di documenti non sono
disponibili.
Se l'indice di ricerca non ha ancora raggiunto una copertura del 100%, ti viene comunque addebitato l'intero spazio di archiviazione dell'indice segnalato nella
visualizzazione INFORMATION_SCHEMA.SEARCH_INDEXES.
Le query che utilizzano la funzione SEARCH o sono ottimizzate dagli indici di ricerca
non vengono accelerate da BigQuery BI Engine.
Gli indici di ricerca non vengono utilizzati quando la tabella indicizzata viene modificata da un'istruzione DML, ma possono essere utilizzati quando il predicato ottimizzabile dagli indici di ricerca fa parte di una sottoquery in un'istruzione DML.
Nella seguente query non viene utilizzato un indice di ricerca:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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)."]]