Sintaksis kueri penelusuran

Saat menelusuri aset, Anda dapat memfilter hasil penelusuran dengan menentukan kueri yang terdiri dari kolom metadata aset, operator, dan nilai.

Kolom dan referensi yang dapat ditelusuri

Untuk kolom yang dapat Anda gunakan dalam kueri searchAllResources, lihat Kolom ResourceSearchResult.

Untuk kolom yang dapat Anda gunakan dalam kueri searchAllIamPolicies, lihat Kolom IamPolicySearchResult.

Untuk resource yang dapat Anda telusuri, lihat Jenis resource.

Pencocokan teks

Saat menelusuri pencocokan teks, Anda dapat mencocokkan kolom metadata aset persis atau sebagian.

Pencocokan teks yang sama persis

Untuk pencocokan teks persis, gunakan operator = (sama dengan) dengan sintaksis berikut:

ASSET_METADATA_FIELD=QUERY

Contoh:

location=us-central1-a

Perhatikan aturan berikut saat melakukan pencocokan teks yang tepat:

  • Agar kueri bernilai benar, nilai kueri harus sama persis dengan nilai kolom metadata aset.

  • Untuk kolom dengan nilai daftar, jika nilai kueri cocok dengan salah satu nilai elemen ini, maka data ini dianggap cocok.

  • Nilai kueri peka huruf besar/kecil.

  • Nilai kueri pencocokan persis diperlakukan seperti frasa, tetapi tidak dapat berisi karakter pengganti.

Pencocokan teks sebagian

Untuk pencocokan teks sebagian, gunakan operator : (has) dengan sintaksis berikut:

ASSET_METADATA_FIELD:QUERY

Contoh:

location:us-central1

Saat melakukan penelusuran dengan operator :, nilai kueri dan aset nilai isian {i>metadata <i}adalah dikonversi menjadi token sebagai perbandingan. Setiap kata dari nilai kueri diperiksa untuk mengetahui apakah kata tersebut ada dalam urutan berturut-turut dalam nilai kolom metadata aset. Saat menggunakan kecocokan parsial, nilai kueri tidak peka huruf besar/kecil.

Nilai kueri pencocokan sebagian dapat berupa frasa atau kombinasi frasa, dan dapat berisi karakter pengganti. Hingga 10 perbandingan dapat dibuat dalam kueri, dengan maksimum 2.048 karakter. Jika Anda memiliki kasus penggunaan untuk kueri yang lebih panjang, hubungi gcp-asset-inventory-and-search-feedback@googlegroups.com.

Aturan tokenisasi

Aturan tokenisasi untuk pencocokan teks parsial adalah sebagai berikut:

  • Karakter khusus di awal dan di akhir akan dihapus.

  • Karakter yang bukan alfanumerik ([a-zA-Z0-9]), garis bawah (_), atau tanda dan (&) diperlakukan sebagai pembatas.

Berikut beberapa contoh tokenisasi:

  • us-central1 ditokenkan ke [us,central1]

  • alex-2020@EXAMPLE.com ditokenkan ke [alex,2020,example,com]

  • google.com/cloud ditokenkan ke [google,com,cloud]

  • Compute %Instance% ditokenkan ke [compute,instance]

  • $%^*-! ditokenkan ke []

  • compute*storage ditokenkan ke [compute,storage]

  • compute&storage ditokenkan ke [compute&storage]

  • ALEX_test@example.com ditokenkan ke [alex_test,example,com]

  • instance/_my_vm_ ditokenkan ke [instance,_my_vm_]

Contoh pencocokan teks yang persis dan sebagian

Aset yang kolom location-nya memiliki nilai us-central1-a cocok dengan terhadap kueri berikut.

Kueri Alasan pencocokan
location=us-central1-a
Cocok karena frasa us-central1-a sama persis dengan nilai kolom.
location:US-Central1-A
Cocok karena karakter tanda baca diperlakukan sebagai pemisah, dan nilai kueri tidak peka huruf besar/kecil.
location:"us central1 a"
Cocok karena kata-kata dalam frasa "us central1 a" mencocokkan nilai isian dalam urutan yang berurutan.
location:(central1 us a)
Cocok karena kata dalam kombinasi (central1 us a) cocok dengan kata dalam nilai kolom dalam urutan apa pun.
location:(a "us central1")
Cocok karena frasa di dalam kombinasi, a dan "us central1", cocok dengan kata-kata dalam nilai kolom dalam urutan apa pun. Karena "us central1" adalah , kata-kata tersebut harus dicocokkan dalam urutan yang berurutan.
location:us-central*
Cocok karena karakter pengganti * digunakan untuk membuat awalan kecocokan.

Aset yang kolom location-nya memiliki nilai us-central1-a tidak cocok dengan kueri berikut.

Kueri Alasan tidak cocok
location=US-central1-a
Tidak cocok karena frasa peka huruf besar/kecil. Sebagai gantinya, gunakan operator : untuk pencocokan yang tidak peka huruf besar/kecil.
location=us-central1
Tidak cocok karena frasa cocok sebagian dengan nilai kolom. Sebagai gantinya, gunakan operator : untuk pencocokan parsial.

Membuat kueri pencocokan teks

Nilai kueri dapat terdiri dari frasa, kombinasi, negasi, dan karakter pengganti.

Frasa

Frasa adalah satu atau beberapa kata yang dicocokkan secara berurutan. Untuk mencocokkan kata tanpa menghormati urutan, gunakan kombinasi.

Kueri berikut mencocokkan aset yang kolom policy-nya memiliki kata alex dan kata 2020 dalam urutan berturut-turut:

policy:"alex 2020"

Aset yang nilai kolom policy-nya "alex.2020@example.com" cocok dengan karena kata alex dan 2020 berada dalam urutan yang berurutan. . diabaikan karena tanda baca diperlakukan sebagai pembatas.

Aset yang nilai kolom policy-nya adalah "2020.alex@example.com" atau "alex.us.2020@example.com" tidak cocok, karena kata alex dan 2020 tidak berurutan.

Membuat frasa

Perhatikan aturan berikut saat Anda membuat frasa:

  • Jika frasa hanya berisi karakter alfabet Latin dasar ISO [a-zA-Z], angka [0-9], konektor email atau URL dasar [_-+.@/&], atau karakter pengganti [*], frasa tersebut tidak perlu diapit tanda petik ganda:

    policy:alex.2020@example.com
    

    Namun, pemberian tanda kutip ganda tetap berfungsi, dan berperilaku sama:

    policy:"alex.2020@example.com"
    
  • Jika frasa memiliki spasi atau karakter khusus lainnya, frasa tersebut harus digabungkan tanda kutip ganda:

    location:"us central1"
    
  • Jika frasa diapit tanda kutip ganda dan juga berisi tanda kutip ganda (") atau garis miring terbalik (\), Anda harus meng-escape-nya sebagai \" atau \\. Atau, ganti dengan satu spasi karena karakter non-alfanumerik diperlakukan sebagai pembatas saat melakukan penelusuran. Kueri berikut diperlakukan sama:

    description:"One of \"those\" descriptions."
    description:"One of those descriptions."
    
  • Saat menggunakan gcloud CLI atau REST API, Anda harus melakukan escape tanda kutip ganda yang digunakan untuk menunjukkan frasa:

    --query="location:(a \"us central1\")"
    
    "query": "location:(a \"us central1\")"
    

Kombinasi

Frasa penelusuran dapat digabungkan menggunakan operator logika huruf besar AND atau OR. Menyertakan AND bersifat opsional saat menggunakan tanda kurung. Misalnya, kueri berikut diperlakukan sama:

policy:(alex charlie)
policy:(alex AND charlie)

Jika aset berisi kolom metadata dengan daftar nilai, kombinasi AND tidak menjamin bahwa semua kata harus berada dalam satu elemen. Misalnya, jika kolom metadata adalah policy=["alex@example.com", "bola@example.com", "charlie@example.com"], penelusuran dengan policy:(alex charlie) akan cocok, karena alex@example.com berisi alex, dan charlie@example.com berisi charlie.

Anda dapat menggunakan tanda kurung untuk mengelompokkan jenis kombinasi. Contoh berikut menampilkan aset yang memiliki kolom kebijakan yang berisi alex dan charlie di pesanan, atau aset yang memiliki kolom kebijakan yang berisi bola.

policy:((alex charlie) OR bola)

Anda dapat menggunakan frasa dalam kombinasi untuk mencocokkan beberapa kata secara berurutan pesanan. Contoh berikut menampilkan aset yang memiliki kolom kebijakan yang berisi alex dan 2020 dalam urutan berurutan, atau bola:

policy:(("alex 2020") OR bola)

Contoh kombinasi

Kueri berikut menunjukkan berbagai kombinasi. Catat penempatan tanda kurung untuk memisahkan operator AND dan OR. Menggabungkan operator dalam satu set tanda kurung tidak valid, misalnya: policy:(alex charlie OR bola).

Kueri Deskripsi
policy:(alex charlie)
Menampilkan aset yang kolom policy berisi keduanya alex dan charlie.
policy:(alex OR charlie)
Menampilkan aset yang kolom policy-nya berisi salah satu alex atau charlie.
policy:((alex charlie) OR bola)
Menampilkan aset yang kolom policy-nya berisi alex dan charlie, atau memiliki kata bola.
policy:(alex charlie) OR name:bola
Menampilkan aset yang kolom policy-nya berisi alex dan charlie atau yang name berisi bola.

Negasi

Kueri penelusuran dapat dinegasikan menggunakan operator NOT huruf besar. Tanda kurung didukung, tetapi tidak wajib.

Contoh negasi

  • Menampilkan aset yang kolom state-nya tidak berisi kata running.

    NOT state:running
    
  • Menampilkan aset yang kolom policy-nya tidak berisi alex atau charlie.

    NOT policy:(alex OR charlie)
    
  • Menampilkan aset yang kolom networkTags-nya tidak berisi internal atau private.

    NOT (networkTags:internal OR networkTags:private)
    

Karakter pengganti

Tanda bintang (*) dapat digunakan dalam frasa sebagai karakter pengganti. Bergantung pada posisinya, tanda bintang dapat memiliki arti yang berbeda.

  • Jika berada di akhir frasa, * akan diperlakukan sebagai pencocokan awalan token. Sebagai contoh, "al 20*" setara dengan (al* 20*). Urutan awalan tidak masalah.

    Frasa "al 20*" cocok dengan nilai kolom dengan token yang dimulai dengan al (seperti alex), dan token yang diawali dengan 20 (seperti 2020).

  • Untuk labels, jika seluruh nilai kueri hanya berisi satu *—misalnya, "labels.env:*"—nilai tersebut mewakili pemeriksaan eksistensi. Artinya, Inventaris Aset Cloud memeriksa apakah kunci label env ada. Hanya kolom labels yang mendukung pemeriksaan keberadaan.

  • Jika * berada di tengah proses —misalnya, "compute*storage"—hal ini diperlakukan sebagai tokenisasi. Nilai kueri ini setara dengan "compute storage".

  • Jika * berada di awal dan akhir frasa, misalnya, "*compute storage*", frasa tersebut akan diperlakukan sebagai pembatas tokenisasi. Nilai kueri ini setara dengan "compute storage".

Perbandingan numerik dan stempel waktu

Untuk perbandingan numerik dan stempel waktu, gunakan operator perbandingan dengan sintaksis berikut:

ASSET_METADATA_FIELD>=QUERY

Operator perbandingan yang tersedia adalah sebagai berikut:

  • =: sama dengan

  • >: lebih besar dari

  • >=: lebih besar dari atau sama dengan

  • <: kurang dari

  • <=: kurang dari atau sama dengan

Untuk membandingkan dengan stempel waktu seperti yang disimpan di createTime dan updateTime kolom metadata aset, gunakan bilangan bulat 64-bit yang ditandatangani (epoch stempel waktu dalam detik) atau string tanggal dan waktu UTC+0 dalam salah satu format berikut:

  • 2021-01-01 (YYYY-MM-DD)

  • "2021-01-01T00:00:00" (&quot;YYYY-MM-DDThh:mm:ss&quot;)

Contoh tanggal dan waktu

Aset yang kolom createTime-nya memiliki nilai 1609459200 (stempel waktu epoch 2021-01-01T00:00:00) cocok dengan kueri berikut:

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"