Para pesquisar recursos, é possível filtrar os resultados da pesquisa especificando um FIELD, um operador e um QUERY.
Correspondência exata de texto: operador "igual a" (=
)
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.
Correspondência parcial de texto: operador "tem" (:
)
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 =
, >
, >=
, <
e <=
.
FIELD=QUERY
FIELD>QUERY
FIELD>=QUERY
FIELD<QUERY
FIELD<=QUERY
Os operadores de comparação verificam se o resultado entre QUERY e o valor dos metadados do recurso FIELD é verdadeiro.
Os nomes aceitos para FIELD incluem createTime e updateTime.
Para campos de carimbo de data/hora (createTime e updateTime), QUERY pode ser um número inteiro assinado de 64 bits, que representa o carimbo de data/hora da época em segundos, ou uma string de data e hora em um dos formatos abaixo (o fuso horário é UTC):
- AAAA-MM-DD: 2021-01-01 (as aspas são opcionais)
- "AAAA-MM-DDThh:mm:ss": "2021-01-01T00:00:00" (é necessário inserir aspas)
Exemplos
Por exemplo, um recurso em que o campo createTime
tem o valor 1609459200
(carimbo de data/hora da época de 2021-01-01T00:00:00
) corresponde
às seguintes consultas:
Igual a.
createTime=1609459200 createTime=2021-01-01 createTime="2021-01-01T00:00:00"
Maior que
createTime>1500000000 createTime>2020-01-01 createTime>"2020-01-01T00:00:00"
Maior ou igual a.
createTime>=1609459200 createTime>=2021-01-01 createTime>="2021-01-01T00:00:00"
Menor que
createTime<1700000000 createTime<2022-01-01 createTime<"2022-01-01T00:00:00"
Menor ou igual a.
createTime<=1609459200 createTime<=2021-01-01 createTime<="2021-01-01T00:00:00"
Frase
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
Negar filtros de pesquisa
Os filtros de pesquisa podem ser negados usando o operador NOT
. Os parênteses são
aceitos, mas não obrigatórios.
Exemplos: negar filtros de pesquisa
Retorna recursos em que o campo
state
não contém a palavraACTIVE
.NOT state:ACTIVE
Retorna recursos em que o campo
owner
não tem a palavraamy
nem a palavrajohn
.NOT owner:(amy OR john)
Retorna recursos em que o campo
networkTags
não contém a palavrainternal
ouprivate
.NOT (networkTags:internal OR networkTags:private)
Curinga
O asterisco (*
) pode ser usado em frases como caractere curinga. Conforme a
posição, pode ter significados diferentes.
Se estiver no final de uma frase, como
"am 20*"
, é um indicador de correspondência de prefixo de token. A consulta é equivalente a(am* 20*)
. Ele corresponde ao campo contendo um token que começa com "am", como "amy", e um token que começa com "20", como "2021". A ordem dos prefixos não importa.Se a frase inteira contiver apenas um
*
, como"labels.env:*"
, ele realiza uma verificação de existência. Ele verifica se a chave de rótulo "env" fornecida existe. Os demais campos não são compatíveis.Se estiver no meio de uma frase, como
"compute*storage"
, ele é tratado como um delimitador de tokenização. A consulta é equivalente a "compute storage".Se estiver no começo e no fim de uma frase, como
"*compute storage*"
, ele é tratado como um delimitador de tokenização. A consulta é equivalente a "compute storage".
Exemplos: correspondência de prefixo de token
Retorna recursos em que o campo
owner
contém uma palavra que começa comam
:owner:am*
Retorna recursos em que o campo
owner
tem duas palavras com"amy"
e"20"
como prefixos:owner:"amy 20*" owner:"20 amy*"
Se você tiver um recurso com valor de campo
owner
igual a"amy.2020@gmail.com"
, as consultas acima vão corresponder. Após a tokenização,"amy"
e"20"
passam a ser prefixos. Lembre-se de que a string de consulta"amy 20*"
é diferente de"amy 20"
, que exige que20
seja uma palavra inteira, e não 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:*