Sintaxis de la búsqueda

Cuando buscas recursos, puedes filtrar los resultados de la búsqueda si especificas una consulta que consta de un campo de metadatos de recursos, un operador y un valor.

Campos y recursos que se pueden buscar

Para ver los campos que puedes usar en una consulta searchAllResources, consulta Campos de ResourceSearchResult.

Para ver los campos que puedes usar en una consulta searchAllIamPolicies, consulta Campos de IamPolicySearchResult.

Para conocer los recursos que puedes buscar, consulta Tipos de recursos.

Coincidencia de texto

Cuando buscas una concordancia de texto, puedes hacer coincidir un campo de metadatos de un activo exactamente o parcialmente.

Coincidencia de texto exacta

Para obtener una coincidencia de texto exacta, 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 concordancia 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 consulta coincide con uno de los elementos de la lista, se considera una coincidencia.

  • Los valores de consulta distinguen mayúsculas de minúsculas.

  • Un valor de consulta de concordancia exacta se trata como una frase, pero no puede contener comodines.

Coincidencia de texto parcial

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 consulta y los valores del campo de metadatos del activo se convierten en tokens para realizar la comparación. Se verifica cada palabra del valor de la consulta para saber si existe en orden consecutivo en el valor del campo de metadatos del activo. Cuando se usan coincidencias parciales, los valores de la consulta no distinguen mayúsculas de minúsculas.

Los valores de consulta de concordancia 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 de texto parcial son las siguientes:

  • Se quitan los caracteres especiales iniciales y finales.

  • Los caracteres que no sean alfanuméricos ([a-zA-Z0-9]), guiones bajos (_) ni virgulillas (&) se consideran delimitadores.

A continuación, se presentan algunos ejemplos de asignación de token:

  • A us-central1 se le asigna un token: [us,central1]

  • A alex-2020@EXAMPLE.com se le asigna un token: [alex,2020,example,com]

  • A google.com/cloud se le asigna un token: [google,com,cloud]

  • A Compute %Instance% se le asigna un token: [compute,instance]

  • A $%^*-! se le asigna un token: []

  • A compute*storage se le asigna un token: [compute,storage]

  • A compute&storage se le asigna un token: [compute&storage]

  • A ALEX_test@example.com se le asigna un token: [alex_test,example,com]

  • A instance/_my_vm_ se le asigna un token: [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 consultas.

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 consulta no distingue mayúsculas de 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 consultas.

Consulta Motivo por el que no hay coincidencias
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 mayúsculas de 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 crear una consulta de concordancia de texto

Un valor de consulta 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 recursos cuyo campo policy tiene la palabra alex y la palabra 2020 en orden consecutivo:

policy:"alex 2020"

Un activo cuyo valor de campo policy es "alex.2020@example.com" coincide con la consulta, ya que las palabras alex y 2020 están en orden consecutivo. Se ignora ., ya que la puntuación se trata como un delimitador.

Un recurso cuyo valor de campo policy es "2020.alex@example.com" o "alex.us.2020@example.com" no coincide, 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 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.com
    

    Sin 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 encerrarse entre comillas dobles:

    location:"us central1"
    
  • Si la frase está encerrada entre comillas dobles y también contiene comillas dobles (") o barra invertida (\), debes escaparlas como \" o \\. Como alternativa, reemplázalos por un espacio único, ya que los caracteres no alfanuméricos se tratan como delimitadores cuando se realiza una búsqueda. Las siguientes consultas 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 escapar los 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 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 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 hacer coincidir 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 consultas, se muestran varias combinaciones. Observa la ubicación de los paréntesis para separar los operadores AND y OR. No se puede combinar operadores dentro de un solo conjunto de paréntesis, por ejemplo: policy:(alex charlie OR bola).

Consulta Descripción
policy:(alex charlie)
Muestra los recursos cuyo campo policy contenga alex y charlie.
policy:(alex OR charlie)
Muestra los recursos cuyo campo policy contenga alex o charlie.
policy:((alex charlie) OR bola)
Muestra los recursos cuyo campo policy contenga alex y charlie, o bien la palabra bola.
policy:(alex charlie) OR name:bola
Muestra los recursos cuyo campo policy contenga alex y charlie, o cuyo campo name contenga 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 state no contengan la palabra running.

    NOT state:running
    
  • Muestra los elementos cuyo campo policy no contenga alex ni charlie.

    NOT policy:(alex OR charlie)
    
  • Muestra los elementos cuyo campo networkTags no contenga internal ni private.

    NOT (networkTags:internal OR networkTags:private)
    

Comodines

Los asteriscos (*) se pueden usar en una frase como carácter comodín. Según la posición, un asterisco puede tener diferentes significados.

  • Si * está al final de una frase, se lo 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 con un token que comienza con al (como alex) y un token que comienza con 20 (como 2020).

  • En el caso de labels, si el valor completo de la consulta solo contiene un *, por ejemplo, "labels.env:*", representa una verificación de existencia. Es decir, Cloud Asset Inventory verifica si existe la clave de etiqueta env. Solo el campo labels admite verificaciones de existencia.

  • Si * está en medio de una frase, por ejemplo, "compute*storage", se trata como un delimitador de asignación de tokens. Este valor de consulta es equivalente a "compute storage".

  • Si * está al principio y al final de una frase, por ejemplo, "*compute storage*", se considera un delimitador de tokenización. Este valor de consulta es equivalente a "compute storage".

Comparación numérica y de marcas de tiempo

Para la comparación numérica y de marca 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 los 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 consultas:

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"