简介
通过本文您可以了解:
简单查询条件支持的字段(Field)和操作符(Operation),以及字段对应操作符的支持情况。
简单查询条件中支持使用的操作符包括 eq(等于)、gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)、nested(嵌套查询)、exist(存在性查询)、match-phrase(模糊查询)和 prefix(前缀查询)。
聚合操作中支持使用的操作符包括 min(最小值)、max(最大值)、average(平均数,类似于 SQL 中的 avg)、sum(求和)、count(计数)、distinct(去重统计行数,类似于 SQL 中的 count(distinct),去重统计行数的计算结果是个近似值,当去重统计行数小于1万时,计算结果接近精确值,当去重统计行数达到1亿时,计算结果的误差为2%左右)、group(分组计数,当分组较大时可能会存在误差)。
使用自定义标签相关字段(CustomId、CustomLabels)搜索文件时,系统会按照对象标签的 Key-Value 来搜索文件。对象标签的 Key 和 Value 均不区分大小写。例如要搜索包含 Bucket = examplebucket 标签的文件,您需要设置查询条件为 {"Bucket": "examplebucket"}。
元数据过滤支持的字段(Field)和操作符(Operation),以及字段对应操作符的支持情况。
简单查询条件中支持使用的操作符包括 eq(等于)、gt(大于)、gte(大于等于)、lt(小于)、lte(小于等于)、match-phrase(模糊查询)和 prefix(前缀查询)。
使用自定义标签相关字段(CustomId、CustomLabels)搜索文件时,系统会按照对象标签的 Key-Value 来搜索文件。对象标签的 Key 和 Value 均不区分大小写。例如要搜索包含 Bucket = examplebucket 标签的文件,您需要设置查询条件为 {"Bucket": "examplebucket"}。
简单查询字段和操作符的支持列表
下表列出了简单查询条件和聚合操作中支持的字段,以及字段对相应操作符的支持情况。
简单查询条件
Field(字段) | 类型 | 说明 | 支持的操作符 | 是否支持排序 |
COSTaggingCount | Int | COS 自定义标签的数量 | eq、gt、gte、lt、lte | 是 |
COSTagging.* | Container | COS 自定义标签。储存您业务在 cos object 上的自定义标签的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | eq、gt、gte、lt、lte、prefix、exist | 否 |
COSUserMeta.* | Container | COS 自定义头部。储存您业务在 cos object 上的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | eq、gt、gte、lt、lte、prefix、exist | 否 |
CreateTime | String | 元数据创建时间的时间戳,格式为 RFC3339Nano | eq、gt、gte、lt、lte | 是 |
CustomId | String | 该文件的自定义 ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个 URI 关联到您系统内的某个 ID。推荐传入全局唯一的值 | eq、gt、gte、lt、lte、prefix | 是 |
CustomLabels.* | Container | 文件自定义标签列表。储存您业务自定义的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | eq、gt、gte、lt、lte、prefix、exist | 否 |
ETag | String | Object 生成时会创建相应的 ETag,ETag 用于标识一个 Object 的内容 | eq、gt、gte、lt、lte、prefix | 是 |
FileModifiedTime | String | 文件最近一次修改时间的时间戳,格式为 RFC3339Nano | eq、gt、gte、lt、lte | 是 |
Filename | String | 文件路径 | eq、gt、gte、lt、lte、match-phrase、prefix | 是 |
MediaType | String | 文件媒体类型 枚举值: image:图片 other:其他 document:文档 archive:压缩包 audio:音频 video:视频 | eq、gt、gte、lt、lte、prefix | 是 |
ObjectACL | String | 文件访问权限属性 | eq、gt、gte、lt、lte | 是 |
ObjectId | String | 对象唯一 ID | eq、gt、gte、lt、lte、prefix | 是 |
ServerSideEncryption | String | 加密算法,需要设置 x-cos-server-side-encryption | eq、gt、gte、lt、lte、prefix | 是 |
Size | Int | 文件大小,单位为字节 | eq、gt、gte、lt、lte | 是 |
UpdateTime | String | 元数据修改时间的时间戳,格式为 RFC3339Nano 创建元数据后,如果未更新过元数据,则元数据修改时间的时间戳和元数据创建时间的时间戳相同 | eq、gt、gte、lt、lte | 是 |
URI | String | 资源标识字段,表示需要建立索引的文件地址 | eq、gt、gte、lt、lte、prefix | 是 |
简单查询聚合操作
Field(字段) | 类型 | 说明 | 支持的操作符 | 是否支持排序 |
ContentDisposition | String | 指定 Object 被下载时的名称。需要设置 COS Object HTTP 属性 Content-Disposition | count、distinct、group | 是 |
ContentEncoding | String | 指定该 Object 被下载时的内容编码格式。需要设置 COS Object HTTP 属性 Content-Encoding | count、distinct、group | 是 |
ContentLanguage | String | Object 内容使用的语言。需要设置 COS Object HTTP 属性 Content-Language | count、distinct、group | 是 |
ContentType | String | 文件内容类型(MIME Type) | count、distinct、group | 是 |
COSCRC64 | String | 文件 CRC64值 | count、distinct、group | 是 |
COSStorageClass | String | 文件存储空间类型 | count、distinct、group | 是 |
COSTagging.* | Container | COS 自定义标签。储存您业务在 cos object 上的自定义标签的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | - | 否 |
COSTaggingCount | Int | COS 自定义标签的数量 | min、max、average、sum、count、distinct、group | 是 |
COSUserMeta.* | Container | COS 自定义头部。储存您业务在 cos object 上的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | - | 否 |
CreateTime | String | 元数据创建时间的时间戳,格式为 RFC3339Nano | count、distinct、group | 是 |
CustomId | String | 该文件的自定义 ID。该文件索引到数据集后,作为该行元数据的属性存储,用于和您的业务系统进行关联、对应。您可以根据业务需求传入该值,例如将某个 URI 关联到您系统内的某个 ID。推荐传入全局唯一的值 | count、distinct、group | 是 |
CustomLabels.* | Container | 文件自定义标签列表。储存您业务自定义的键名、键值对信息,用于在查询时可以据此为筛选项进行检索 | - | 否 |
ETag | String | Object 生成时会创建相应的 ETag,ETag 用于标识一个 Object 的内容 | count、distinct、group | 是 |
FileModifiedTime | String | 文件最近一次修改时间的时间戳,格式为 RFC3339Nano | count、distinct、group | 是 |
Filename | String | 文件路径 | count、distinct、group | 是 |
MediaType | String | 文件媒体类型 枚举值: image:图片 other:其他 document:文档 archive:压缩包 audio:音频 video:视频 | count、distinct、group | 是 |
ObjectACL | String | 文件访问权限属性 | count、distinct、group | 是 |
ObjectId | String | 对象唯一 ID | count、distinct、group | 是 |
ServerSideEncryption | String | 加密算法,需要设置 x-cos-server-side-encryption | count、distinct、group | 是 |
Size | Int | 文件大小,单位为字节 | min、max、average、sum、count、distinct、group | 是 |
UpdateTime | String | 元数据修改时间的时间戳,格式为 RFC3339Nano 创建元数据后,如果未更新过元数据,则元数据修改时间的时间戳和元数据创建时间的时间戳相同 | count、distinct、group | 是 |
URI | String | 资源标识字段,表示需要建立索引的文件地址 | count、distinct、group | 是 |
元数据过滤字段和操作符的支持列表
逻辑运算表达式
支持的逻辑运算符包括 and、or、not,如下表所示。
运算符 | 描述 | 示例 |
$and | 与 | {"$and":[{"field1":{"$in":["value1","value2"]}},{"field2":{"$gt":123}}]} |
$or | 或 | {"$or":[{"field1":{"$in":["value1","value2"]}},{"field2":{"$gt":123}}]} |
$not | 非 | {"$not":{"field1":{"$eq":"value1"}}} |
字符串类型表达式
字符串类型的值必须要用英文双引号括起来。字符串类型可以用单值或多值匹配。当前所支持的字符串类型的运算符,如下表所示。
运算符 | 描述 | 示例 |
$in | 匹配任意一个字符串值 | {"field1":{"$in":["value1","value2"]}} |
$nin | 排除所有字符串值 | {"field1":{"$nin":["value1","value2"]}} |
$eq | 匹配单个字符串值 | {"field1":{"$eq":"value1"}} |
$ne | 排除单个字符串值 | {"field1":{"$ne":"value1"}} |
数值类型表达式
标量索引字段的数值类型支持 uint64、int64、double 类型。Filter 表达式所支持数值类型的运算符,如下表所示。
运算符 | 描述 | 示例 |
$gt | 大于 | {"field1":{"$gt":123}} |
$gte | 大于等于 | {"field1":{"$gte":123}} |
$eq | 等于 | {"field1":{"$eq":123}} |
$lt | 小于 | {"field1":{"$lt":123}} |
$lte | 小于等于 | {"field1":{"$lte":123}} |
$ne | 不等于 | {"field1":{"$ne":123}} |
$in | 匹配任意一个字符串值 | {"field1":{"$in":[123,456]}} |
$nin | 排除所有字符串值 | {"field1":{"$nin":[123,456]}} |
Filter 中支持的标量字段
任何数据对象都一定有的标量数据,即上文 field1、field2支持的字段
字段名 | 类型 | 描述 |
ContentType | String | 对象的 Meta 类型,例如为 JPEG,由客户在上传的时候指定 |
MediaType | String | 文件媒体类型。枚举值: image:图片 other:其他 document:文档 archive:压缩包 audio:音频 video:视频 |
CustomId | String | 客户主动传入的一个随机 Id,用于标识对象 |
Size | Int | 对象的大小 |
FileModifiedTime | Int | 对象的最后更新时间戳 |
COSUserMeta | Json | COS 自定义头部。储存您业务在 cos object 上的键名、键值对信息,用于在查询时可以据此为筛选项进行检索。如:COSUserMeta.xxx |
COSTagging | Json | COS 自定义标签。储存您业务在 cos object 上的自定义标签的键名、键值对信息,用于在查询时可以据此为筛选项进行检索。如:COSTagging.xxx |
CustomLabels | Json | 文件自定义标签列表。储存您业务自定义的键名、键值对信息,用于在查询时可以据此为筛选项进行检索。如:CustomLabels.xxx |