Syntaxe des requêtes

Pour rechercher des éléments, vous pouvez filtrer les résultats de la recherche en spécifiant un FIELD, un opérateur et un QUERY.

Opérateur de texte exact pour le mot clé exact: est égal(e) à (=)

FIELD=QUERY

Voici un exemple de requête : policy=amy.2020@gmail.com.

L'opérateur equals (=) vérifie que QUERY correspond exactement à la valeur des métadonnées de l'élément FIELD. Il est sensible à la casse. Pour un champ répété, si QUERY correspond à l'une des valeurs du champ, l'élément est considéré comme une correspondance. Les noms FIELD acceptés varient selon que la requête est une recherche de ressources ou une recherche de stratégie IAM (Identity and Access Management). QUERY est une phrase, mais ne peut pas contenir de caractères génériques.

Correspondance partielle de texte: opérateur deux-points (:)

FIELD:QUERY

Voici un exemple de requête : policy:amy.2020@gmail.

Lorsque vous effectuez une recherche, la valeur QUERY est comparée à la valeur des métadonnées d'éléments spécifiées (FIELD). La requête et les champs de métadonnées de l'élément sont convertis en une séquence de mots (c'est-à-dire des jetons) à des fins de comparaison. Cette conversion comprend les étapes suivantes :

  • Suppression des caractères spéciaux de début et de fin, et la tokenisation de la valeur de recherche en traitant les caractères spéciaux comme des délimiteurs. Les caractères spéciaux de tokenisation sont les caractères qui ne sont pas des caractères alphanumériques de [a-zA-Z0-9], de trait de soulignement [_] ou d'esperluette [&].

  • Application de la normalisation Unicode de manière à ignorer la casse des caractères

Voici quelques exemples de tokenisation :

  • "amy-2020@GMAIL.com" est tokenisé en : [amy,2020,gmail,com]

  • "google.com/cloud" est tokenisé en : [google,com,cloud]

  • "Compute %Instance%" est tokenisé en : [compute,instance]

  • "$%^*-!" est tokenisé en : []

  • "" est tokenisé en : []

  • "compute*storage" est tokenisé en : [compute,storage]

  • "compute&storage" est tokenisé en : [compute&storage]

  • "BOB_test@gmail.com" est tokenisé en : [bob_test,gmail,com]

  • "instance/_my_vm_" est tokenisé en : [instance,_my_vm_]

L'opérateur has (:) vérifie que chaque mot de QUERY existe dans la valeur du champ de métadonnées de l'élément. Il vérifie également l'ordre des mots et leur séquence. La valeur FIELD acceptée peut être différente selon qu'il s'agit d'une recherche de ressources ou d'une recherche de stratégie IAM. QUERY peut être une expression ou une combinaison d'expressions.

Examples

Par exemple, un élément dont le champ policy a la valeur amy.2020@gmail.com correspond aux requêtes suivantes:

  • Correspond car l'expression est exactement identique à la valeur du champ.
policy=amy.2020@gmail.com
  • Les correspondances sont établies, car les caractères de ponctuation sont traités comme des délimiteurs et la requête n'est pas sensible à la casse.
policy:amy-2020@GMAIL.com
  • Correspond car les mots d'une expression sont mis en correspondance selon leur ordre. Notez que "amy 2020 gmail" est une expression. Les mots doivent correspondre et se suivre dans cet ordre.
policy:"amy 2020 gmail"
  • Correspond car une combinaison de mots peut apparaître dans n'importe quel ordre. Notez que (gmail 2020 amy) est une combinaison. Les mots sont mis en correspondance, pas nécessairement dans l'ordre.
policy:(gmail 2020 amy)
  • Correspond car les mots contenus dans l'expression sont mis en correspondance dans l'ordre et les mots de la combinaison apparaissent dans n'importe quel ordre. Notez que "amy 2020" est une expression et que les mots doivent correspondre et se suivre dans cet ordre. (gmail "amy 2020") est une combinaison. gmail et "amy 2020" sont mis en correspondance et pas nécessairement dans l'ordre.
policy:(gmail "amy 2020")
  • Correspond car * peut être utilisé dans une expression pour indiquer une correspondance de préfixe.
policy:amy-20*

Un élément dont le champ policy contient la valeur "amy.2020@gmail.com" ne correspond PAS aux requêtes suivantes:

  • Ne correspond pas, car l'expression est sensible à la casse. Utilisez plutôt l'opérateur has (:) pour les correspondances non sensibles à la casse.
policy=amy.2020@GMAIL.com
  • Ne correspond pas, car l'expression correspond partiellement à la valeur du champ. Utilisez plutôt l'opérateur has (:) pour les correspondances partielles.
policy=amy.2020@gmail

Correspondance numérique: opérateurs de comparaison (=, >, >=, <, <=)

FIELD=QUERY

FIELD>QUERY

FIELD>=QUERY

FIELD<QUERY

FIELD<=QUERY

Les opérateurs de comparaison vérifient que le résultat de la comparaison entre QUERY et la valeur des métadonnées de l'élément FIELD est vrai.

Les noms FIELD acceptés incluent createTime et updateTime.

Pour les champs de code temporel (createTime et updateTime), QUERY peut être un entier signé de 64 bits, qui représente l'horodatage de l'epoch en secondes, ou une chaîne de date et d'heure dans l'un des formats ci-dessous (le fuseau horaire est UTC):

  • YYYY-MM-DD : 2021-01-01 (les guillemets sont facultatifs)

  • "YYYY-MM-DDThh:mm:ss" : "2021-01-01T00:00:00" (entre guillemets)

Examples

Par exemple, un élément dont le champ createTime contient la valeur 1609459200 (code temporel d'epoch 2021-01-01T00:00:00) correspond aux requêtes suivantes:

Égal à

createTime=1609459200
createTime=2021-01-01
createTime="2021-01-01T00:00:00"

Supérieur à

createTime>1500000000
createTime>2020-01-01
createTime>"2020-01-01T00:00:00"

Supérieur ou égal à

createTime>=1609459200
createTime>=2021-01-01
createTime>="2021-01-01T00:00:00"

Inférieur à

createTime<1700000000
createTime<2022-01-01
createTime<"2022-01-01T00:00:00"

Inférieur ou égal à

createTime<=1609459200
createTime<=2021-01-01
createTime<="2021-01-01T00:00:00"

Expression

Une expression est constituée d'un ou de plusieurs mots placés entre guillemets doubles ("). Avec les expressions, l'ordre des mots est important. Les mots de l'expression doivent correspondre et se suivre dans l'ordre. Notez que pour rechercher plusieurs mots sans respecter l'ordre, vous devez utiliser la combinaison (par exemple, field:(word1 word2 word3)).

Les expressions suivantes sont identiques :

policy:amy
policy:"amy"

policy:amy.2020@gmail.com
policy:"amy.2020@gmail.com"

name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"

Les expressions suivantes doivent être placées entre guillemets :

name:"my instance"

policy:"amy%2020@gmail.com"

description:"domain:gmail.com"

description:"hello \"world\""

description:"hello\\world"

Exemples : expression

  • Renvoie les éléments dont le champ policycontient le mot amy et le mot 2020 dans l'ordre et consécutifs :

    policy:"amy 2020"
    
  • Si vous avez un élément dont la valeur du champ policy est "amy.2020@gmail.com", la requête ci-dessus va correspondre.

  • Dans le cas d'un élément policy dont la valeur du champ est "2020.amy@gmail.com", la requête ci-dessus ne correspondra pas, car les mots ne sont pas mis en correspondance dans l'ordre.

  • Dans le cas d'un élément policydont la valeur du champ est "amy.us.2020@gmail.com", la requête ci-dessus ne correspondra pas, car les mots ne sont pas mis en correspondance de façon consécutive.

Combinaison

Les expressions de recherche peuvent être combinées à l'aide de AND ou OR. Les parenthèses permettent de regrouper des combinaisons.

Exemples : combinaison

  • Renvoie les éléments dont le champ policy contient à la fois le mot amy et le mot john, sans respecter l'ordre. AND est facultatif dans une combinaison. Notez que pour rechercher plusieurs mots dans l'ordre, vous devez utiliser l'expression (par exemple, field:"word1 word2 word3").

    owner:(amy john)
    
  • Renvoie les éléments dont le champ policy contient le mot amy ou le mot john.

    policy:(amy OR john)
    
  • Renvoie les éléments dont le champ policy contient à la fois les mots amy et john, ou le mot bob.

    policy:((amy john) OR bob)
    
  • Renvoie les éléments dont le champ policy contient le mot amy et le mot john, ou dont le champ name contient le mot bob.

    policy:(amy john) OR name:bob
    

Filtres de recherche de négation

Vous pouvez utiliser des filtres de négation de recherche à l'aide de l'opérateur NOT. Les parenthèses sont acceptées, mais pas obligatoires.

Exemples: Ignorer les filtres de recherche

  • Renvoie les éléments dont le champ state ne contient pas le mot ACTIVE.

    NOT state:ACTIVE
    
  • Renvoie les éléments dont le champ policy ne contient ni le mot amy, ni le mot john.

    NOT policy:(amy OR john)
    
  • Renvoie les éléments dont le champ networkTags ne contient ni le mot internal ni le mot private.

    NOT (networkTags:internal OR networkTags:private)
    

Caractère générique

Les astérisques (*) peuvent être utilisés dans une expression en tant que caractère générique. Selon la position, leur signification peut être différente.

  • S'il se trouve à la fin d'une expression (par exemple, "am 20*"), il s'agit d'un indicateur de correspondance de préfixe de jeton. La requête équivaut à (am* 20*). Il correspond au champ contenant un jeton commençant par "am" (par exemple, "amy") et un jeton commençant par "20" (par exemple, "2021"). L'ordre des préfixes n'a pas d'importance.

  • Si la phrase entière ne contient qu'un seul * (par exemple, "labels.env:*"), elle effectue une vérification de l'existence. Elle vérifie si la clé de libellé "env" donnée existe. Les autres champs ne sont pas acceptés.

  • Si elle se trouve au milieu d'une expression (par exemple, "compute*storage"), elle est traitée comme un délimiteur de tokenisation. La requête est équivalente à "compute storage".

  • Si elle se trouve à la fois au début et à la fin d'un syntagme (par exemple, "*compute storage*"), il est considéré comme un délimiteur de tokenisation. La requête équivaut à "compute storage" (calcul de l'espace de stockage).

Exemples : correspondance de préfixe de jeton

  • Renvoie les éléments dont le champ policy contient un mot commençant par am :

    policy:am*
    
  • Renvoie les éléments dont le champ policy contient deux mots avec les préfixes "amy" et "20" :

    policy:"amy 20*"
    
    policy:"20 amy*"
    
  • Si vous avez un élément dont la valeur du champ policy est "amy.2020@gmail.com", les requêtes ci-dessus correspondent. Après la tokenisation, "amy" et "20" sont tous deux des préfixes. Notez que la chaîne de requête "amy 20*" est différente de "amy 20". La seconde nécessite que 20 soit un mot entier autre qu'un préfixe.

Exemple: existence de la clé de libellé

Renvoie les éléments dont l'un des éléments labels a la clé "env" et une valeur quelconque (y compris une valeur vide ou aucune valeur):

labels.env:*