要搜索资产,您可以通过指定
FIELD
、运算符和
QUERY
。
文本完全匹配:等于 (=
) 运算符
FIELD=QUERY
查询示例:policy=amy.2020@gmail.com
。
equals
(=
) 运算符会检查 QUERY
是否与
与资产元数据的值 FIELD
匹配。区分大小写。对于重复字段,如果 QUERY
匹配
字段的值之一,系统就会将该素材资源视为匹配项。支持的
FIELD
名称取决于查询是否为资源
或 Identity and Access Management (IAM) 政策搜索。QUERY
是一个短语,但不能包含通配符。
文本部分匹配:冒号 (:
) 运算符
FIELD:QUERY
查询示例:policy:amy.2020@gmail
。
在执行搜索时,系统会将QUERY
与
指定资产元数据 FIELD
的值。查询和资产元数据字段将转换为一个字词序列(即词法单元),以进行比较。这是通过下列步骤实现的:
通过将特殊字符视为分隔符来移除前导/尾随特殊字符并将搜索值词法单元化。标记化特殊项 个字符是指不属于字母数字
[a-zA-Z0-9]
的字符, 下划线[_]
或和号[&]
。执行 Unicode 大小写折叠,以便忽略字符大小写。
以下是一些词法单元化示例:
"amy-2020@GMAIL.com"
词法单元化为:[amy,2020,gmail,com]
"google.com/cloud"
词法单元化为:[google,com,cloud]
"Compute %Instance%"
词法单元化为:[compute,instance]
"$%^*-!"
词法单元化为:[]
""
词法单元化为:[]
"compute*storage"
词法单元化为:[compute,storage]
"compute&storage"
词法单元化为:[compute&storage]
"BOB_test@gmail.com"
词法单元化为:[bob_test,gmail,com]
"instance/_my_vm_"
词法单元化为:[instance,_my_vm_]
has
(:
) 运算符会检查 QUERY
的每个字词
存在于资产元数据字段的值中。此外,它还会检查字词的顺序和连续性。支持的 FIELD
可以是
具体取决于是资源搜索还是 IAM
政策搜索。QUERY
可以是词组或
短语组合。
示例
例如,某项资产的 policy
字段的值为 amy.2020@gmail.com
与以下查询匹配:
- 匹配的原因是词组与字段值完全一样。
policy=amy.2020@gmail.com
- 之所以匹配,是因为标点字符被视为分隔符,并且 则不区分大小写。
policy:amy-2020@GMAIL.com
- 匹配的原因是短语中的字词按顺序匹配。请注意,
"amy 2020 gmail"
是一个短语;字词会按顺序且连续匹配。
policy:"amy 2020 gmail"
- 匹配的原因是字词组合可以按任意顺序显示。请注意,
(gmail 2020 amy)
是一个组合;字词会进行匹配并且不一定按顺序。
policy:(gmail 2020 amy)
- 匹配的原因是短语中的字词按顺序匹配,而组合中的字词以任意顺序显示。请注意,
"amy 2020"
是一个短语,字词会按顺序且连续匹配。(gmail "amy 2020")
是一个组合;gmail
和"amy 2020"
不一定按顺序进行匹配。
policy:(gmail "amy 2020")
- 匹配的原因是可以在短语中使用
*
来表示前缀匹配。
policy:amy-20*
“policy
”字段的值为“"amy.2020@gmail.com"
”的资产不匹配
以下查询:
- 不匹配的原因是词组区分大小写。请改用
has
(:
) 运算符进行不区分大小写匹配。
policy=amy.2020@GMAIL.com
- 不匹配,因为词组部分与字段的值匹配。请改用
has
(:
) 运算符进行部分匹配。
policy=amy.2020@gmail
数值匹配:比较(=
、>
、>=
、<
、<=
)运算符
FIELD=QUERY
FIELD>QUERY
FIELD>=QUERY
FIELD<QUERY
FIELD<=QUERY
比较运算符会检查比较结果
QUERY
和资产元数据的值
FIELD
为 true。
支持的 FIELD
名称包括 createTime
和 updateTime
。
对于时间戳字段 (createTime
和 updateTime
),QUERY
可以是 64 位有符号整数,表示以秒为单位的纪元时间戳;也可以是以下格式之一的日期时间字符串(时区为 UTC):
YYYY-MM-DD:2021-01-01(引号可选)
"YYYY-MM-DDThh:mm:ss":"2021-01-01T00:00:00"(需要引号)
示例
例如,一项资产的 createTime
字段的值为 1609459200
(周期
timestamp of 2021-01-01T00:00:00
)匹配以下查询:
等于
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"
Phrase
短语是用双引号 ("
) 引起来的一个或多个字词。对于短语,字词的顺序很重要。短语中的字词必须按顺序并且连续匹配。请注意,要匹配不包含
相关顺序,则必须使用组合(例如,
field:(word1 word2 word3)
)。
以下表达式是相同的:
policy:amy
policy:"amy"
policy:amy.2020@gmail.com
policy:"amy.2020@gmail.com"
name://cloudresourcemanager.googleapis.com/projects/projects/foo-bar
name:"//cloudresourcemanager.googleapis.com/projects/projects/foo-bar"
以下短语必须用引号括起:
name:"my instance"
policy:"amy%2020@gmail.com"
description:"domain:gmail.com"
description:"hello \"world\""
description:"hello\\world"
示例:短语
返回
policy
字段按顺序且连续包含字词amy
和字词2020
的资源:policy:"amy 2020"
如果您的资源的
policy
字段值为"amy.2020@gmail.com"
,则上述查询匹配。如果您的资源的
policy
字段值为"2020.amy@gmail.com"
,则上述查询不会匹配,因为字词顺序不匹配。如果您的资源的
policy
字段值为"amy.us.2020@gmail.com"
,则上述查询不匹配,因为字词并不连续匹配。
组合
搜索短语可以使用 AND
或 OR
进行组合。您需要使用括号将组合括起来。
示例:组合
返回
policy
字段同时包含字词amy
和字词john
(但无需考虑顺序)的资产。AND
在组合中是可选的。请注意, 按顺序匹配多个字词,您必须使用词组(例如 示例field:"word1 word2 word3"
)。owner:(amy john)
返回
policy
字段具有字词amy
或字词john
的资源。policy:(amy OR john)
返回
policy
字段同时包含字词amy
和字词john
或包含字词bob
的资源。policy:((amy john) OR bob)
返回
policy
字段同时包含字词amy
和字词john
或name
字段包含字词bob
的资源。policy:(amy john) OR name:bob
排除搜索过滤条件
您可以使用 NOT
运算符对搜索过滤条件进行否定运算。圆括号
受支持,但并非必需。
示例:否定搜索过滤条件
返回
state
字段不包含ACTIVE
一词的资产。NOT state:ACTIVE
返回
policy
字段既不包含amy
一词又不包含john
一词的资产。NOT policy:(amy OR john)
返回
networkTags
字段不包含internal
一词或private
一词的资产。NOT (networkTags:internal OR networkTags:private)
通配符
星号 (*
) 可以在短语中用作通配符。根据其位置,可能具有不同的含义。
如果它位于短语的末尾(例如
"am 20*"
),则它是一个词法单元前缀。 匹配指标。该查询等于(am* 20*)
。它与以下字段匹配: 包含以“am”开头的词元(例如“amy”)和 以“20”开头,例如“2021”。前缀的顺序无关紧要。如果整个词组仅包含一个
*
,例如"labels.env:*"
,则由其执行检查。它检查给定标签键“env” 存在。其他字段不受支持。如果是在短语中间,例如
"compute*storage"
,则 视为标记化分隔符。该查询等同于“compute storage”。例如,如果它同时出现在短语的开头和结尾,
"*compute storage*"
,则将其视为标记化分隔符。该查询等效于“计算存储”。
示例:令牌前缀匹配
返回
policy
字段包含以am
开头的字词的资源:policy:am*
返回
policy
字段包含两个字词且"amy"
和"20"
作为前缀的资源:policy:"amy 20*" policy:"20 amy*"
如果您的
policy
字段值为"amy.2020@gmail.com"
,则上述查询均匹配。令牌化后,"amy"
和"20"
都是前缀。请注意,查询字符串"amy 20*"
与"amy 20"
不同。后者要求20
是一个完整的字词,而不是前缀。
示例:标签键存在性
返回 labels
具有“env”的资源作为键,并且具有任意值
(包括空值或无值):
labels.env:*