Lorsque vous recherchez des éléments, vous pouvez filtrer les résultats de la recherche en spécifiant une requête composée d'un champ de métadonnées d'élément, d'un opérateur et d'une valeur.
Champs et ressources indexables
Pour connaître les champs que vous pouvez utiliser dans une requête searchAllResources
, consultez la section Champs ResourceSearchResult.
Pour connaître les champs que vous pouvez utiliser dans une requête searchAllIamPolicies
, consultez la section Champs IamPolicySearchResult.
Pour connaître les ressources que vous pouvez rechercher, consultez la section Types de ressources.
Mise en correspondance de texte
Lorsque vous recherchez une correspondance textuelle, vous pouvez faire correspondre un champ de métadonnées d'élément exactement ou partiellement.
Correspondance exacte du texte
Pour rechercher une correspondance exacte de texte, utilisez l'opérateur =
(égalité) avec la syntaxe suivante:
ASSET_METADATA_FIELD=QUERY
Exemple :
location=us-central1-a
Tenez compte des règles suivantes lorsque vous utilisez la correspondance exacte:
Pour que la requête soit vraie, sa valeur doit correspondre exactement à celle du champ des métadonnées de l'élément.
Pour un champ dont la valeur est une liste, si la valeur de la requête correspond à l'un des éléments de la liste, elle est considérée comme une correspondance.
Les valeurs de requête sont sensibles à la casse.
La valeur d'une requête en correspondance exacte est traitée comme une expression, mais ne peut pas contenir de caractères génériques.
Mise en correspondance partielle du texte
Pour une correspondance partielle de texte, utilisez l'opérateur :
(contient) avec la syntaxe suivante:
ASSET_METADATA_FIELD:QUERY
Exemple :
location:us-central1
Lorsque vous effectuez une recherche avec l'opérateur :
, la valeur de la requête et les valeurs des champs de métadonnées d'élément sont converties en jetons à des fins de comparaison. Chaque mot de la valeur de la requête est vérifié pour déterminer s'il existe dans l'ordre consécutif dans la valeur du champ de métadonnées de l'élément. Lorsque vous utilisez des correspondances partielles, les valeurs de la requête ne sont pas sensibles à la casse.
Les valeurs de requête de correspondance partielle peuvent être des expressions ou une combinaison d'expressions, et peuvent contenir des caractères génériques. Vous pouvez effectuer jusqu'à 10 comparaisons dans une requête, avec un maximum de 2 048 caractères. Si vous disposez d'un cas d'utilisation pour des requêtes plus longues, contactez gcp-asset-inventory-and-search-feedback@googlegroups.com.
Règles de tokenisation
Les règles de tokenisation pour la mise en correspondance partielle du texte sont les suivantes:
Les caractères spéciaux de début et de fin sont supprimés.
Les caractères qui ne sont pas alphanumériques (
[a-zA-Z0-9]
), les traits de soulignement (_
) ou les esperluettes (&
) sont traités comme des séparateurs.
Voici quelques exemples de tokenisation :
us-central1
est tokenisé en[us,central1]
.alex-2020@EXAMPLE.com
est tokenisé en[alex,2020,example,com]
.google.com/cloud
est tokenisé en[google,com,cloud]
.Compute %Instance%
est tokenisé en[compute,instance]
.$%^*-!
est tokenisé en[]
.compute*storage
est tokenisé en[compute,storage]
.compute&storage
est tokenisé en[compute&storage]
.ALEX_test@example.com
est tokenisé en[alex_test,example,com]
.instance/_my_vm_
est tokenisé en[instance,_my_vm_]
.
Exemples de correspondances exactes et partielles de texte
Un élément dont le champ location
a la valeur us-central1-a
correspond aux requêtes suivantes.
Requête | Motif de la mise en correspondance |
---|---|
location=us-central1-a |
Correspondance, car l'expression us-central1-a est exactement identique à la valeur du champ.
|
location:US-Central1-A |
Correspondance, car les caractères de ponctuation sont traités comme des délimiteurs et la valeur de la requête n'est pas sensible à la casse. |
location:"us central1 a" |
Correspond, car les mots de l'expression "us central1 a" correspondent à la valeur du champ dans l'ordre consécutif.
|
location:(central1 us a) |
Correspondance, car les mots de la combinaison (central1 us a) correspondent aux mots de la valeur du champ dans n'importe quel ordre.
|
location:(a "us central1") |
Correspondance, car les expressions de la combinaison, a et "us central1" , correspondent aux mots de la valeur du champ dans n'importe quel ordre. Étant donné que "us central1" est une expression, ces mots doivent correspondre dans l'ordre.
|
location:us-central* |
Correspond, car le caractère générique * est utilisé pour effectuer une correspondance de préfixe.
|
Un élément dont le champ location
a la valeur us-central1-a
ne correspond pas aux requêtes suivantes.
Requête | Motif de la non-mise en correspondance |
---|---|
location=US-central1-a |
Ne correspond pas, car l'expression est sensible à la casse. Utilisez plutôt l'opérateur : pour les correspondances non sensibles à la casse.
|
location=us-central1 |
Ne correspond pas, car l'expression correspond partiellement à la valeur du champ.
Utilisez plutôt l'opérateur : pour les correspondances partielles.
|
Créer une requête de correspondance textuelle
Une valeur de requête peut être composée de phrases, de combinaisons, de négations et d'espaces réservés.
Expressions
Une expression est constituée d'un ou de plusieurs mots mis en correspondance dans l'ordre. Pour mettre en correspondance des mots sans respecter l'ordre, utilisez plutôt des combinaisons.
La requête suivante correspond aux éléments dont le champ policy
contient le mot alex
et le mot 2020
dans l'ordre:
policy:"alex 2020"
Un élément dont la valeur du champ policy
est "alex.2020@example.com"
correspond à la requête, car les mots alex
et 2020
sont dans l'ordre. .
est ignoré, car les signes de ponctuation sont traités comme des délimiteurs.
Un élément dont la valeur du champ policy
est "2020.alex@example.com"
ou "alex.us.2020@example.com"
ne correspond pas, car les mots alex
et 2020
ne sont pas dans l'ordre.
Créer une phrase
Tenez compte des règles suivantes lorsque vous créez une phrase:
Si l'expression ne contient que des caractères de l'alphabet latin de base ISO
[a-zA-Z]
, des chiffres[0-9]
, des connecteurs d'adresse e-mail ou d'URL de base[_-+.@/&]
, ou des caractères génériques[*]
, vous n'avez pas besoin de la placer entre guillemets doubles:policy:alex.2020@example.com
Toutefois, l'ajout de guillemets doubles fonctionne toujours et se comporte de la même manière:
policy:"alex.2020@example.com"
Si la phrase contient des espaces ou d'autres caractères spéciaux, elle doit être placée entre guillemets doubles:
location:"us central1"
Si l'expression est placée entre guillemets doubles et qu'elle contient également des guillemets doubles (
"
) ou une barre oblique inverse (\
), vous devez les échapper en tant que\"
ou\\
. Vous pouvez également les remplacer par un espace unique, car les caractères non alphanumériques sont traités comme des délimiteurs lors d'une recherche. Les requêtes suivantes sont traitées de la même manière:description:"One of \"those\" descriptions." description:"One of those descriptions."
Lorsque vous utilisez gcloud CLI ou l'API REST, vous devez échapper aux doubles guillemets utilisés pour indiquer une phrase:
--query="location:(a \"us central1\")"
"query": "location:(a \"us central1\")"
Combinaisons
Les expressions de recherche peuvent être combinées à l'aide des opérateurs logiques en majuscules AND
ou OR
. L'inclusion de AND
est facultative lorsque vous utilisez des parenthèses. Par exemple, les requêtes suivantes sont traitées de la même manière:
policy:(alex charlie)
policy:(alex AND charlie)
Si un composant contient un champ de métadonnées avec une liste de valeurs, une combinaison AND
ne garantit pas que tous les mots doivent se trouver dans un seul élément. Par exemple, si un champ de métadonnées est policy=["alex@example.com", "bola@example.com", "charlie@example.com"]
, la recherche avec policy:(alex charlie)
correspond, car alex@example.com
contient alex
et charlie@example.com
contient charlie
.
Vous pouvez utiliser des parenthèses pour regrouper des types de combinaisons. L'exemple suivant renvoie les éléments dont le champ de stratégie contient alex
et charlie
dans n'importe quel ordre, ou les éléments dont le champ de stratégie contient bola
.
policy:((alex charlie) OR bola)
Vous pouvez utiliser une expression dans une combinaison pour faire correspondre plusieurs mots dans l'ordre. L'exemple suivant renvoie les éléments dont le champ de stratégie contient alex
et 2020
dans l'ordre consécutif, ou bola
:
policy:(("alex 2020") OR bola)
Exemples de combinaisons
Les requêtes suivantes illustrent différentes combinaisons. Notez l'emplacement des parenthèses pour séparer les opérateurs AND
et OR
. La combinaison d'opérateurs dans un seul ensemble de parenthèses n'est pas valide (par exemple : policy:(alex charlie OR bola)
).
Requête | Description |
---|---|
policy:(alex charlie) |
Renvoie les éléments dont le champ policy contient à la fois alex et charlie .
|
policy:(alex OR charlie) |
Renvoie les éléments dont le champ policy contient alex ou charlie .
|
policy:((alex charlie) OR bola) |
Renvoie les éléments dont le champ policy contient à la fois alex et charlie , ou le mot bola .
|
policy:(alex charlie) OR name:bola |
Renvoie les éléments dont le champ policy contient alex et charlie , ou dont le champ name contient bola .
|
Négation
Vous pouvez utiliser des requêtes de négation de recherche à l'aide de l'opérateur NOT
en majuscule. Les parenthèses sont acceptées, mais pas obligatoires.
Exemples de négation
Renvoie les éléments dont le champ
state
ne contient pas le motrunning
.NOT state:running
Renvoie les éléments dont le champ
policy
ne contient nialex
, nicharlie
.NOT policy:(alex OR charlie)
Renvoie les éléments dont le champ
networkTags
ne contient niinternal
niprivate
.NOT (networkTags:internal OR networkTags:private)
Caractères génériques
Les astérisques (*
) peuvent être utilisés dans une expression en tant que caractère générique. Selon la position, un astérisque peut avoir différentes significations.
Si
*
se trouve à la fin d'une expression, il est traité comme une correspondance de préfixe de jeton. Par exemple,"al 20*"
correspond à(al* 20*)
. L'ordre des préfixes n'a pas d'importance.L'expression
"al 20*"
correspond à une valeur de champ avec un jeton commençant paral
(par exemple,alex
) et un jeton commençant par20
(par exemple,2020
).Pour
labels
, si la valeur entière de la requête ne contient qu'un seul*
(par exemple,"labels.env:*"
), il s'agit d'une vérification d'existence. Autrement dit, inventaire des éléments cloud vérifie si la clé de libelléenv
existe. Seul le champlabels
est compatible avec les vérifications d'existence.Si
*
se trouve au milieu d'une expression (par exemple,"compute*storage"
), il est traité comme un délimiteur de tokenisation. Cette valeur de requête est équivalente à"compute storage"
.Si
*
se trouve au début et à la fin d'une expression, par exemple,"*compute storage*"
, il est traité comme un délimiteur de tokenisation. Cette valeur de requête est équivalente à"compute storage"
.
Comparaison numérique et code temporel
Pour la comparaison numérique et de code temporel, utilisez des opérateurs de comparaison avec la syntaxe suivante:
ASSET_METADATA_FIELD>=QUERY
Les opérateurs de comparaison disponibles sont les suivants:
=
: égal à>
: supérieur à>=
: supérieur ou égal à<
: inférieur à<=
: inférieur ou égal à
Pour comparer des codes temporels tels que ceux stockés dans les champs de métadonnées d'éléments createTime
et updateTime
, utilisez un entier signé de 64 bits (code temporel d'époque en secondes) ou une chaîne de date et heure UTC+0 dans l'un des formats suivants:
2021-01-01
(AAAA-MM-JJ)"2021-01-01T00:00:00"
("YYYY-MM-DDThh:mm:ss")
Exemples de date/heure
Un élément dont le champ createTime
a la valeur 1609459200
(horodatage de l'époque de 2021-01-01T00:00:00
) correspond aux requêtes suivantes:
createTime=1609459200
createTime=2021-01-01
createTime="2021-01-01T00:00:00"
createTime>1500000000
createTime>2020-01-01
createTime>"2020-01-01T00:00:00"
createTime>=1609459200
createTime>=2021-01-01
createTime>="2021-01-01T00:00:00"
createTime<1700000000
createTime<2022-01-01
createTime<"2022-01-01T00:00:00"
createTime<=1609459200
createTime<=2021-01-01
createTime<="2021-01-01T00:00:00"