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 kecocokan teks, Anda dapat mencocokkan kolom metadata aset persis atau sebagian.

Pencocokan teks 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 persis:

  • 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 elemen daftar, nilai tersebut dianggap cocok.

  • Nilai kueri peka huruf besar/kecil.

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

Pencocokan teks sebagian

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

ASSET_METADATA_FIELD:QUERY

Contoh:

location:us-central1

Saat melakukan penelusuran dengan operator :, nilai kueri dan nilai kolom metadata aset dikonversi menjadi token untuk perbandingan. Setiap kata dari nilai kueri diperiksa untuk mengetahui apakah kata tersebut ada dalam urutan berturut-turut dalam nilai kolom metadata aset. Saat menggunakan pencocokan sebagian, 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 dilakukan 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 sebagian adalah sebagai berikut:

  • Karakter khusus di awal dan di akhir dihapus.

  • Karakter yang bukan alfanumerik ([a-zA-Z0-9]), garis bawah (_), atau ampersand (&) 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 persis dan sebagian

Aset yang kolom location-nya memiliki nilai us-central1-a cocok dengan 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 dalam frasa "us central1 a" cocok dengan nilai kolom dalam urutan berturut-turut.
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 frasa, kata-kata ini harus dicocokkan dalam urutan berurutan.
location:us-central*
Cocok karena karakter pengganti * digunakan untuk membuat pencocokan awalan.

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 sebagian cocok dengan nilai kolom. Sebagai gantinya, gunakan operator : untuk pencocokan sebagian.

Membuat kueri kecocokan 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 adalah "alex.2020@example.com" cocok dengan kueri, karena kata alex dan 2020 berada dalam urutan berturut-turut. . 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, mengapit dengan tanda kutip ganda masih berfungsi, dan berperilaku sama:

    policy:"alex.2020@example.com"
    
  • Jika frasa memiliki spasi atau karakter khusus lainnya, frasa tersebut harus diapit dalam tanda petik 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 perlu meng-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 logis 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 dalam urutan apa pun, atau aset yang memiliki kolom kebijakan yang berisi bola.

policy:((alex charlie) OR bola)

Anda dapat menggunakan frasa di dalam kombinasi untuk mencocokkan beberapa kata dalam urutan berurutan. 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. Perhatikan penempatan tanda kurung untuk memisahkan operator AND dan OR. Menggabungkan operator dalam satu kumpulan tanda kurung tidak valid, misalnya: policy:(alex charlie OR bola).

Kueri Deskripsi
policy:(alex charlie)
Menampilkan aset yang kolom policy-nya berisi alex dan charlie.
policy:(alex OR charlie)
Menampilkan aset yang kolom policy-nya berisi 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 kolom name-nya 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. Misalnya, "al 20*" setara dengan (al* 20*). Urutan awalan tidak penting.

    Frasa "al 20*" cocok dengan nilai kolom dengan token yang diawali 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 frasa—misalnya, "compute*storage"* akan diperlakukan sebagai pemisah tokenisasi. Nilai kueri ini setara dengan "compute storage".

  • Jika * berada di awal dan akhir frasa, misalnya, "*compute storage*", * 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 kolom metadata aset createTime dan updateTime, gunakan bilangan bulat bertanda 64-bit (stempel waktu epoch 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" ("YYYY-MM-DDThh:mm:ss")

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"