Cuando buscas recursos, puedes filtrar los resultados de la búsqueda especificando una consulta compuesta por un campo de metadatos del recurso, un operador y un valor.
Campos y recursos aptos para búsquedas
Para conocer los campos que puedes usar en una búsqueda de searchAllResources, consulta Campos de ResourceSearchResult.
Para conocer los campos que puedes usar en una búsqueda de searchAllIamPolicies, consulta Campos de IamPolicySearchResult.
Para conocer los recursos que puedes buscar, consulta Tipos de recursos.
Coincidencia de texto
Cuando buscas una coincidencia de texto, puedes hacer que coincida un campo de metadatos de un recurso exactamente o parcialmente.
Coincidencia exacta de texto
Para una coincidencia exacta de texto, usa el operador = (igual) con la siguiente sintaxis:
ASSET_METADATA_FIELD=QUERY
Por ejemplo:
location=us-central1-a
Ten en cuenta las siguientes reglas cuando realices una coincidencia de texto exacta:
Para que la consulta sea verdadera, el valor de la consulta debe coincidir exactamente con el valor del campo de metadatos del activo.
En el caso de un campo con un valor de lista, si el valor de la búsqueda coincide con uno de los elementos de la lista, se considera una coincidencia.
Los valores de la consulta distinguen mayúsculas de minúsculas.
Un valor de consulta de coincidencia exacta se trata como una frase, pero no puede contener comodines.
Coincidencia parcial de texto
Para una coincidencia parcial de texto, usa el operador : (tiene) con la siguiente sintaxis:
ASSET_METADATA_FIELD:QUERY
Por ejemplo:
location:us-central1
Cuando se realiza una búsqueda con el operador :, el valor de la búsqueda y los valores de los campos de metadatos del activo se convierten en tokens para la comparación. Se verifica cada palabra del valor de la búsqueda para determinar si existe en orden consecutivo en el valor del campo de metadatos del activo. Cuando se usan coincidencias parciales, los valores de la búsqueda no distinguen mayúsculas de minúsculas.
Los valores de consulta de coincidencia parcial pueden ser frases o una combinación de frases, y pueden contener comodines. Se pueden realizar hasta 10 comparaciones en una consulta, con un máximo de 2,048 caracteres. Si tienes un caso de uso para consultas más largas, comunícate con gcp-asset-inventory-and-search-feedback@googlegroups.com.
Reglas de tokenización
Las reglas de tokenización para la coincidencia parcial de texto son las siguientes:
Se quitan los caracteres especiales iniciales y finales.
Los caracteres que no sean alfanuméricos (
[a-zA-Z0-9]), guiones bajos (_) o ampersands (&) se tratan como delimitadores.
A continuación, se presentan algunos ejemplos de asignación de token:
us-central1se tokeniza como[us,central1]alex-2020@EXAMPLE.comse tokeniza como[alex,2020,example,com]google.com/cloudse tokeniza como[google,com,cloud]Compute %Instance%se tokeniza como[compute,instance]$%^*-!se tokeniza como[]compute*storagese tokeniza como[compute,storage]compute&storagese tokeniza como[compute&storage]ALEX_test@example.comse tokeniza como[alex_test,example,com]instance/_my_vm_se tokeniza como[instance,_my_vm_]
Ejemplos de concordancia de texto exacta y parcial
Un activo cuyo campo location tiene el valor us-central1-a coincide con las siguientes búsquedas.
| Consulta | Motivo de la coincidencia |
|---|---|
location=us-central1-a |
Coincide porque la frase us-central1-a es exactamente la misma que el valor del campo.
|
location:US-Central1-A |
Coincide porque los caracteres de puntuación se tratan como delimitadores y el valor de la búsqueda no distingue entre mayúsculas y minúsculas. |
location:"us central1 a" |
Coincide porque las palabras de la frase "us central1 a" coinciden con el valor del campo en orden consecutivo.
|
location:(central1 us a) |
Coincide porque las palabras de la combinación (central1 us a) coinciden con las palabras del valor del campo en cualquier orden.
|
location:(a "us central1") |
Coincide porque las frases dentro de la combinación, a y "us central1", coinciden con las palabras del valor del campo en cualquier orden. Como "us central1" es una frase, estas palabras deben coincidir en orden consecutivo.
|
location:us-central* |
Coincide porque el comodín * se usa para hacer una coincidencia de prefijo.
|
Un activo cuyo campo location tiene el valor us-central1-a no coincide con las siguientes búsquedas.
| Consulta | Motivo por el que no hay coincidencia |
|---|---|
location=US-central1-a |
No coincide porque la frase distingue mayúsculas de minúsculas. En su lugar, usa el operador : para las coincidencias que no distinguen entre mayúsculas y minúsculas.
|
location=us-central1 |
No coincide porque la frase coincide de forma parcial con el valor del campo.
En su lugar, usa el operador : para las coincidencias parciales.
|
Cómo construir una búsqueda de coincidencia de texto
Un valor de búsqueda puede estar compuesto por frases, combinaciones, negaciones y comodines.
Frases
Una frase es una o más palabras que coinciden en orden. Para que coincidan palabras sin respetar el orden, usa combinaciones.
La siguiente consulta coincide con los activos cuyo campo policy contiene la palabra alex y la palabra 2020 en orden consecutivo:
policy:"alex 2020"
Un activo cuyo valor del campo policy es "alex.2020@example.com" coincide con la búsqueda, ya que las palabras alex y 2020 están en orden consecutivo. Se ignora el carácter ., ya que la puntuación se trata como un delimitador.
No coincide un activo cuyo valor del campo policy sea "2020.alex@example.com" o "alex.us.2020@example.com", ya que las palabras alex y 2020 no están en orden consecutivo.
Cómo construir una frase
Ten en cuenta las siguientes reglas cuando construyas una frase:
Si la frase solo contiene caracteres del alfabeto latino básico de ISO
[a-zA-Z], números[0-9], conectores básicos de correo electrónico o URL[_-+.@/&], o comodines[*], no es necesario que se incluya entre comillas dobles:policy:alex.2020@example.comSin embargo, el uso de comillas dobles sigue funcionando y se comporta de la misma manera:
policy:"alex.2020@example.com"Si la frase tiene espacios o algún otro carácter especial, debe estar entre comillas dobles:
location:"us central1"Si la frase está entre comillas dobles y también contiene una comilla doble (
") o una barra inversa (\), debes reemplazarlas por\"o\\. También puedes reemplazarlos por un solo espacio, ya que los caracteres no alfanuméricos se tratan como delimitadores cuando se realiza una búsqueda. Las siguientes búsquedas se tratan de la misma manera:description:"One of \"those\" descriptions." description:"One of those descriptions."Cuando usas gcloud CLI o la API de REST, debes agregar un carácter de escape a las comillas dobles que se usan para indicar una frase:
--query="location:(a \"us central1\")""query": "location:(a \"us central1\")"
Combinaciones
Las frases de búsqueda se pueden combinar con los operadores lógicos en mayúsculas AND o OR. Incluir AND es opcional cuando se usan paréntesis. Por ejemplo, las siguientes consultas se tratan de la misma manera:
policy:(alex charlie)
policy:(alex AND charlie)
Si un activo contiene un campo de metadatos con una lista de valores, una combinación de AND no garantiza que todas las palabras deban estar en un solo elemento. Por ejemplo, si un campo de metadatos es policy=["alex@example.com", "bola@example.com", "charlie@example.com"], la búsqueda con policy:(alex charlie) coincide, ya que alex@example.com contiene alex y charlie@example.com contiene charlie.
Puedes usar paréntesis para agrupar los tipos de combinación. En el siguiente ejemplo, se muestran los recursos que tienen un campo de política que contiene alex y charlie en cualquier orden, o bien los recursos que tienen un campo de política que contiene bola.
policy:((alex charlie) OR bola)
Puedes usar una frase dentro de una combinación para que coincida con varias palabras en orden consecutivo. En el siguiente ejemplo, se muestran los recursos que tienen un campo de política que contiene alex y 2020 en orden consecutivo, o bola:
policy:(("alex 2020") OR bola)
Ejemplos de combinaciones
En las siguientes búsquedas, se muestran varias combinaciones. Observa la ubicación de los paréntesis para separar los operadores AND y OR. No es válido combinar operadores dentro de un solo conjunto de paréntesis, por ejemplo, policy:(alex charlie OR bola).
| Consulta | Descripción |
|---|---|
policy:(alex charlie) |
Devuelve los recursos cuyo campo policy contiene alex y charlie.
|
policy:(alex OR charlie) |
Devuelve los recursos cuyo campo policy contiene alex o charlie.
|
policy:((alex charlie) OR bola) |
Devuelve los recursos cuyo campo policy contiene alex y charlie, o bien la palabra bola.
|
policy:(alex charlie) OR name:bola |
Devuelve los recursos cuyo campo policy contiene alex y charlie, o cuyo campo name contiene bola.
|
Negación
Las búsquedas se pueden negar con el operador NOT en mayúsculas. Los paréntesis son compatibles, pero no obligatorios.
Ejemplos de negación
Muestra los elementos cuyo campo
stateno contengan la palabrarunning.NOT state:runningMuestra los recursos cuyo campo
policyno contengaalexnicharlie.NOT policy:(alex OR charlie)Muestra los elementos cuyo campo
networkTagsno contengainternalniprivate.NOT (networkTags:internal OR networkTags:private)
Comodines
Los asteriscos (*) se pueden usar en una frase como carácter comodín. Según su posición, un asterisco puede tener diferentes significados.
Si
*está al final de una frase, se trata como una coincidencia de prefijo de token. Por ejemplo,"al 20*"es equivalente a(al* 20*). No importa el orden de los prefijos.La frase
"al 20*"coincide con un valor de campo que tiene un token que comienza conal(comoalex) y un token que comienza con20(como2020).En el caso de
labels, si todo el valor de la búsqueda solo contiene un solo*(por ejemplo,"labels.env:*"), representa una verificación de existencia. Es decir, Cloud Asset Inventory verifica si existe la clave de etiquetaenv. Solo el campolabelsadmite verificaciones de existencia.Si
*está en medio de una frase, por ejemplo,"compute*storage", se trata como un delimitador de asignación de token. Este valor de la búsqueda es equivalente a"compute storage".Si
*está al principio y al final de una frase, por ejemplo,"*compute storage*", se trata como un delimitador de tokenización. El valor de esta consulta es equivalente a"compute storage".
Comparación numérica y de marcas de tiempo
Para la comparación numérica y de marcas de tiempo, usa operadores de comparación con la siguiente sintaxis:
ASSET_METADATA_FIELD>=QUERY
Los operadores de comparación disponibles son los siguientes:
=: Igual a>: Mayor que>=: Mayor o igual que<: Menor que<=: Menor o igual que
Para comparar con marcas de tiempo, como las que se almacenan en los campos de metadatos de activos createTime y updateTime, usa un número entero de 64 bits con firma (la marca de tiempo de época en segundos) o una cadena de fecha y hora UTC+0 en uno de los siguientes formatos:
2021-01-01(AAAA-MM-DD)"2021-01-01T00:00:00"("YYYY-MM-DDThh:mm:ss")
Ejemplos de fecha y hora
Un activo cuyo campo createTime tiene el valor 1609459200 (marca de tiempo de época de 2021-01-01T00:00:00) coincide con las siguientes búsquedas:
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"