Para pesquisar recursos, é possível filtrar os resultados da pesquisa especificando um FIELD, um operador e um QUERY.
Texto Correspondência exata de texto: operador (igual) (=
)
FIELD=QUERY
Um exemplo de consulta é: owner=amy.2020@gmail.com
.
O operador equals
(=
) verifica se QUERY corresponde exatamente ao valor dos metadados do recurso FIELD. Ele diferencia maiúsculas de minúsculas. Para um campo repetido, se QUERY corresponder a um dos valores do campo, o recurso será considerado uma correspondência. Os nomes FIELD compatíveis dependem de a consulta ser uma pesquisa de recursos ou uma pesquisa de política de gerenciamento de identidade e acesso (IAM, na sigla em inglês).
O QUERY é uma frase, mas não pode conter caracteres curinga.
Texto parcial de correspondência: tem (operador) (:
)
FIELD:QUERY
Um exemplo de consulta é: owner:amy.2020@gmail
.
Ao executar uma pesquisa, QUERY é comparado ao valor dos metadados de recursos especificados FIELD. Os campos de consulta e de metadados do recurso são convertidos em uma sequência de palavras (ou seja, tokens) para comparação. Isso é feito ao:
- Remover caracteres especiais iniciais/finais e tokenizar o valor
da pesquisa tratando os caracteres especiais como delimitadores. Os caracteres especiais
de tokenização são os caracteres que não são de
[a-zA-Z0-9]
, sublinhados[_]
ou "e" comercial[&]
- Realizar a dobragem Unicode para que a diferença de letra maiúscula e minúscula seja ignorada.
Veja alguns exemplos de tokenização:
"amy-2020@GMAIL.com"
está tokenizado para:[amy,2020,gmail,com]
"google.com/cloud"
está tokenizado para:[google,com,cloud]
"Compute %Instance%"
está tokenizado para:[compute,instance]
"$%^*-!"
está tokenizado para:[]
""
está tokenizado para:[]
"compute*storage"
está tokenizado para:[compute,storage]
"compute&storage"
está tokenizado para:[compute&storage]
"BOB_test@gmail.com"
está tokenizado para:[bob_test,gmail,com]
"instance/_my_vm_"
está tokenizado para:[instance,_my_vm_]
O operador has
(:
) verifica se há cada palavra QUERY dentro
do valor do campo de metadados do recurso. Ele também verifica a ordem
das palavras e a consecutividade. O FIELD compatível pode ser diferente, dependendo se é uma pesquisa de recursos ou do Google IAM. O
QUERY pode ser uma frase ou uma combinação de
frases.
Exemplos
Por exemplo, um recurso com o campo owner
que tem valor "amy.2020@gmail.com"
corresponde às seguintes consultas:
Corresponde porque a frase é exatamente igual ao valor do campo.
owner=amy.2020@gmail.com
Corresponde porque as pontuações são tratadas como delimitadores e a capitalização não é sensível.
owner:amy-2020@GMAIL.com
Corresponde porque as palavras em uma frase são correspondidas em ordem. Observe que
"amy 2020 gmail"
é uma frase. As palavras precisam ser correspondidas em ordem e consecutivas.owner:"amy 2020 gmail"
Corresponde porque uma combinação de palavras pode aparecer em qualquer ordem. Observe que
(gmail 2020 amy)
é uma combinação; correspondência de palavras e não necessariamente em ordem.owner:(gmail 2020 amy)
Corresponde porque as palavras na frase são correspondidas em ordem, e as palavras na combinação aparecem em qualquer ordem. Observe que
"amy 2020"
é uma frase, e as palavras precisam ser correspondidas em ordem e consecutivamente.(gmail "amy 2020")
é combinação;gmail
e"amy 2020"
são correspondidos e não necessariamente em ordem.owner:(gmail "amy 2020")
Corresponde porque
*
pode ser usado em uma frase para indicar uma correspondência de prefixo.owner:amy-20*
Um recurso cujoowner
O campo tem valor"amy.2020@gmail.com"
N matchO corresponde às seguintes consultas:
Não corresponde, porque a frase diferencia maiúsculas de minúsculas. Use o operador
has
(:
) em vez da correspondência que não diferencia maiúsculas de minúsculas.owner=amy.2020@GMAIL.com
Não corresponde, porque a frase corresponde parcialmente ao valor do campo. Em vez disso, use o operador
has
(:
) para fazer uma correspondência parcial.owner=amy.2020@gmail
Correspondência numérica: operadores de comparação (=
, >
, >=
, <
, <=
)
FIELD=QUERY
FIELD>QUERY
FIELD>=QUERY
FIELD<QUERY
FIELD<=QUERY
Os operadores de comparação verificam se o resultado da comparação entre QUERY e o valor dos metadados do recurso FIELD é verdadeiro. Os nomes FIELD compatíveis incluem createTime e updateTime. O QUERY precisa ser um número inteiro assinado de 64 bits, que representa o carimbo de data/hora do período em segundos.
Exemplos
Por exemplo, um recurso que tem o campo createTime
com valor 1600000000
corresponde às seguintes consultas:
Igual.
createTime=1600000000
Maior que
createTime>1500000000
Maior que ou igual a
createTime>=1600000000
Menor que
createTime<1700000000
Menor que ou igual a
createTime<=1600000000
Phrase
Uma frase é uma ou várias palavras entre aspas duplas ("
). Com
frases, a ordem das palavras é importante. As palavras na frase precisam
ser correspondentes em ordem e consecutivas. Para fazer a correspondência de várias palavras sem
reordenação, você precisa usar a combinação (por exemplo,
field:(word1 word2 word3)
.
As expressões a seguir são as mesmas:
owner:amy
owner:"amy"
owner:amy.2020@gmail.com
owner:"amy.2020@gmail.com"
name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"
As seguintes frases precisam estar entre aspas:
name:"my instance"
owner:"amy%2020@gmail.com"
description:"domain:gmail.com"
description:"hello \"world\""
description:"hello\\world"
Exemplos: frase
Retorne recursos em que o campo
owner
tenha as palavrasamy
e palavra2020
em ordem e consecutivamente:owner:"amy 2020"
Se você tiver um recurso com valor de campo
owner
igual a"amy.2020@gmail.com"
, a consulta acima corresponderá.Se você tiver um recurso com valor de campo
owner
igual a"2020.amy@gmail.com"
, a consulta acima não corresponderá, porque as palavras não são correspondidas em ordem.Se você tiver um recurso com valor de campo
owner
igual a"amy.us.2020@gmail.com"
, a consulta acima não corresponderá, porque as palavras não são correspondidas de forma consecutiva.
Combinação
As frases de pesquisa podem ser combinadas usando AND
ou OR
. Os parênteses são usados para
agrupar combinações.
Exemplos: combinação
Retorne recursos em que o campo
owner
tem a palavraamy
e a palavrajohn
, sem especificar a ordem.AND
é opcional em uma combinação. Para corresponder a várias palavras em ordem, é preciso usar a frase (por exemplo,field:"word1 word2 word3"
).owner:(amy john)
Retorne recursos em que o campo
owner
tem a palavraamy
ou a palavrajohn
.owner:(amy OR john)
Retorne recursos em que o campo
owner
tem a palavraamy
e a palavrajohn
ou tem a palavrabob
.owner:((amy john) OR bob)
Retorne recursos em que o campo
owner
tem a palavraamy
e a palavrajohn
ouname
tem a palavrabob
.owner:(amy john) OR name:bob
Curinga
Os asteriscos (*
) podem ser usados em uma frase como um caractere curinga. Dependendo da posição, ele pode ter significados diferentes.
Se estiver no final de uma frase, por exemplo,
"am 20*"
, é um indicador de correspondência de prefixo do token. A consulta é equivalente a(am* 20*)
. Esse campo corresponde ao campo que contém um token que começa com "am", por exemplo, "amy", e um token que começa com "20", por exemplo, "2021". A ordem dos prefixos não importa.Se a frase inteira contiver apenas um
*
, por exemplo,"labels.env:*"
, ele executa uma verificação de existência. Ele verifica se a chave de rótulo fornecida é "env". Outros campos não são compatíveis.Se estiver no meio de uma frase, por exemplo,
"compute*storage"
, é tratado como um delimitador de tokenização. A consulta equivale a "armazenamento de computação".Se estiver no início e no final de uma frase, por exemplo,
"*compute storage*"
, ele é tratado como um delimitador de tokenização. A consulta é equivalente a "armazenamento de computação".
Exemplos: correspondência de prefixo de token
Retorna recursos com o campo
owner
contendo uma palavra que começa comam
:owner:am*
Retorne recursos cujo campo
owner
tem duas palavras com"amy"
e"20"
como prefixos:owner:"amy 20*" owner:"20 amy*"
Se você tiver um recurso com o valor do campo
owner
que é"amy.2020@gmail.com"
, as consultas acima serão correspondentes. Após a tokenização,"amy"
e"20"
são prefixos. Observe que a string de consulta"amy 20*"
é diferente de"amy 20"
. A segunda requer que20
seja uma palavra inteira que não seja um prefixo.
Exemplos: existência da chave de rótulo
Retorne recursos em que um dos objetos
labels
tem "env" como chave e tem qualquer valor (incluindo valor vazio ou nenhum valor):labels.env:*