Sintassi delle query di ricerca

Quando cerchi asset, puoi filtrare i risultati di ricerca specificando una query composta da un campo dei metadati dell'asset, un operatore e un valore.

Risorse e campi disponibili per la ricerca

Per i campi che puoi utilizzare in una query searchAllResources, consulta Campi ResourceSearchResult.

Per i campi che puoi utilizzare in una query searchAllIamPolicies, consulta Campi di IamPolicySearchResult.

Per le risorse che puoi cercare, consulta Tipi di risorse.

Corrispondenza del testo

Quando cerchi una corrispondenza del testo, puoi trovare una corrispondenza con un campo dei metadati della risorsa esattamente o parzialmente.

Corrispondenza esatta del testo

Per una corrispondenza esatta del testo, utilizza l'operatore = (uguale) con la seguente sintassi:

ASSET_METADATA_FIELD=QUERY

Ad esempio:

location=us-central1-a

Tieni presente le seguenti regole quando esegui una corrispondenza esatta del testo:

  • Affinché la query sia vera, il valore della query deve corrispondere esattamente al valore del campo dei metadati della risorsa.

  • Per un campo con un valore di elenco, se il valore della query corrisponde a uno degli elementi dell'elenco, viene considerata una corrispondenza.

  • I valori delle query sono sensibili alle maiuscole.

  • Un valore di query con corrispondenza esatta viene trattato come una frase, ma non può contenere sostituzioni.

Corrispondenza parziale del testo

Per una corrispondenza parziale del testo, utilizza l'operatore : (contiene) con la seguente sintassi:

ASSET_METADATA_FIELD:QUERY

Ad esempio:

location:us-central1

Quando esegui una ricerca con l'operatore :, il valore della query e i valori dei campi dei metadati della risorsa vengono convertiti in token per il confronto. Ogni parola del valore della query viene controllata per verificare se esiste in ordine consecutivo nel valore del campo dei metadati della risorsa. Quando utilizzi le corrispondenze parziali, i valori delle query non distinguono tra maiuscole e minuscole.

I valori delle query con corrispondenza parziale possono essere frasi o combinazioni di frasi e possono contenere caratteri jolly. In una query è possibile effettuare fino a 10 confronti, con un massimo di 2048 caratteri. Se hai un caso d'uso per query più lunghe, contatta gcp-asset-inventory-and-search-feedback@googlegroups.com.

Regole di tokenizzazione

Le regole di tokenizzazione per la corrispondenza parziale del testo sono le seguenti:

  • I caratteri speciali iniziali e finali vengono rimossi.

  • I caratteri non alfanumerici ([a-zA-Z0-9]), i trattini bassi (_) o gli "e commerciali" (&) vengono trattati come delimitatori.

Ecco alcuni esempi di tokenizzazione:

  • us-central1 è tokenizzato in [us,central1]

  • alex-2020@EXAMPLE.com è tokenizzato in [alex,2020,example,com]

  • google.com/cloud è tokenizzato in [google,com,cloud]

  • Compute %Instance% è tokenizzato in [compute,instance]

  • $%^*-! è tokenizzato in []

  • compute*storage è tokenizzato in [compute,storage]

  • compute&storage è tokenizzato in [compute&storage]

  • ALEX_test@example.com è tokenizzato in [alex_test,example,com]

  • instance/_my_vm_ è tokenizzato in [instance,_my_vm_]

Esempi di corrispondenza del testo esatta e parziale

Una risorsa il cui campo location ha il valore us-central1-a corrisponde alle seguenti query.

Query Motivo della corrispondenza
location=us-central1-a
Corrisponde perché la frase us-central1-a è esattamente uguale al valore del campo.
location:US-Central1-A
Trova la corrispondenza perché i caratteri di punteggiatura vengono considerati come delimitatori e il valore della query è senza distinzione tra maiuscole e minuscole.
location:"us central1 a"
Corrispondenze perché le parole nella frase "us central1 a" corrispondono al valore del campo in ordine consecutivo.
location:(central1 us a)
Corrispondenze perché le parole nella combinazione (central1 us a) corrispondono alle parole nel valore del campo in qualsiasi ordine.
location:(a "us central1")
Corrisponde perché le frasi all'interno della combinazione, a e "us central1", corrispondono alle parole nel valore del campo in qualsiasi ordine. Poiché "us central1" è una frase, queste parole devono essere associate in ordine consecutivo.
location:us-central*
Corrisponde perché il carattere jolly * viene utilizzato per creare una corrispondenza con il prefisso.

Una risorsa il cui campo location ha il valore us-central1-a non corrisponde alle seguenti query.

Query Motivo della mancata corrispondenza
location=US-central1-a
Non corrisponde perché la frase è sensibile alle maiuscole. Utilizza invece l'operatore : per le corrispondenze senza distinzione tra maiuscole e minuscole.
location=us-central1
Non corrisponde perché la frase corrisponde parzialmente al valore del campo. Utilizza invece l'operatore : per le corrispondenze parziali.

Creare una query di corrispondenza del testo

Un valore di query può essere composto da frasi, combinazioni, negazioni e caratteri jolly.

Frasi

Una frase è costituita da una o più parole che corrispondono in ordine. Per trovare corrispondenze tra parole senza rispettare l'ordine, utilizza le combinazioni.

La seguente query corrisponde alle risorse il cui campo policy contiene la parola alex e la parola 2020 in ordine consecutivo:

policy:"alex 2020"

Una risorsa il cui valore del campo policy è "alex.2020@example.com" corrisponde alla query, perché le parole alex e 2020 sono in ordine consecutivo. . viene ignorato perché la punteggiatura viene considerata come delimitatore.

Una risorsa il cui valore del campo policy è "2020.alex@example.com" o "alex.us.2020@example.com" non corrisponde, perché le parole alex e 2020 non sono in ordine consecutivo.

Creare una frase

Tieni presente le seguenti regole quando costruisci una frase:

  • Se la frase contiene solo caratteri dell'alfabeto latino di base ISO [a-zA-Z], numeri [0-9], connettori di email o URL di base [_-+.@/&] o caratteri jolly [*], non è necessario racchiuderla tra virgolette doppie:

    policy:alex.2020@example.com
    

    Tuttavia, l'inserimento tra virgolette doppie continua a funzionare e si comporta allo stesso modo:

    policy:"alex.2020@example.com"
    
  • Se la frase contiene spazi o altri caratteri speciali, deve essere racchiusa tra virgolette doppie:

    location:"us central1"
    
  • Se la frase è racchiusa tra virgolette doppie e contiene anche una virgoletta doppia (") o una barra rovesciata (\), devi eseguire l'escape come \" o \\. In alternativa, sostituiscili con un singolo spazio, poiché i caratteri non alfanumerici vengono trattati come delimitatori durante l'esecuzione di una ricerca. Le seguenti query vengono trattate allo stesso modo:

    description:"One of \"those\" descriptions."
    description:"One of those descriptions."
    
  • Quando utilizzi l'interfaccia a riga di comando gcloud o l'API REST, devi eseguire la fuga dalle doppie virgolette utilizzate per indicare una frase:

    --query="location:(a \"us central1\")"
    
    "query": "location:(a \"us central1\")"
    

Combinazioni

Le frasi di ricerca possono essere combinate utilizzando gli operatori logici in maiuscolo AND o OR. L'inclusione di AND è facoltativa quando si utilizzano le parentesi. Ad esempio, le seguenti query vengono trattate allo stesso modo:

policy:(alex charlie)
policy:(alex AND charlie)

Se una risorsa contiene un campo dei metadati con un elenco di valori, una combinazione AND non garantisce che tutte le parole debbano trovarsi in un singolo elemento. Ad esempio, se un campo dei metadati è policy=["alex@example.com", "bola@example.com", "charlie@example.com"], la ricerca con policy:(alex charlie) genera corrispondenze perché alex@example.com contiene alex e charlie@example.com contiene charlie.

Puoi utilizzare le parentesi per raggruppare i tipi di combinazioni. L'esempio seguente restituisce le risorse con un campo criterio contenente alex e charlie in qualunque ordine o le risorse con un campo criterio contenente bola.

policy:((alex charlie) OR bola)

Puoi utilizzare una frase all'interno di una combinazione per trovare corrispondenze con più parole in ordine consecutivo. L'esempio seguente restituisce gli asset con un campo delle norme che contiene alex e 2020 in ordine consecutivo o bola:

policy:(("alex 2020") OR bola)

Esempi di combinazioni

Le seguenti query mostrano varie combinazioni. Prendi nota del posizionamento delle parentesi per separare gli operatori AND e OR. La combinazione di operatori all'interno di un unico insieme di parentesi non è valida, ad esempio:policy:(alex charlie OR bola).

Query Descrizione
policy:(alex charlie)
Restituisce gli asset il cui campo policy contiene sia alex sia charlie.
policy:(alex OR charlie)
Restituisce gli asset il cui campo policy contiene alex o charlie.
policy:((alex charlie) OR bola)
Restituisce gli asset il cui campo policy contiene sia alex che charlie oppure la parola bola.
policy:(alex charlie) OR name:bola
Restituisce gli asset il cui campo policy contiene alex e charlie o il cui campo name contiene bola.

Negazione

Le query di ricerca possono essere negate utilizzando l'operatore NOT in maiuscolo. Le parentesi sono supportate, ma non obbligatorie.