调用 OpenMetaQuery 接口为存储空间(Bucket)开启元数据管理功能并选择检索模式。开启后,OSS 会为 Bucket 创建元数据索引库并对所有文件(Object)建立元数据索引。索引库创建完成后,OSS 会对 Bucket 中新增的文件进行准实时增量扫描并建立元数据索引。
注意事项
阿里云账号默认拥有开启元数据管理功能的权限。如需通过 RAM 用户开启,请确保 RAM 用户拥有
oss:MetaQuery权限。同一个 Bucket 重复调用本接口会返回
MetaQueryAlreadyExist错误。如需修改配置,请先调用 CloseMetaQuery 再重新打开。开启过程是异步的。调用成功后,可通过GetMetaQueryStatus查询当前状态、检索模式与已生效配置。
配置消息通知时,需要为 RAM 角色授予访问指定 MNS 主题的权限。
RouteRule、IndexOptions、DatasetConfig等高级字段仅在 向量检索 时生效;以 标量检索 调用时携带这些字段会返回InvalidArgument。开启后
RouteRule不支持修改。是否启用多 Dataset 路由需要在首次 OpenMetaQuery 时决定;如需变更,只能先 CloseMetaQuery 再重新打开,已索引的元数据会被清空。WorkflowParameters为兼容旧版本的基础工作流开关。后续 AI 内容感知细项不再通过该字段演进,新接入建议使用DatasetConfig配置。
请求语法
POST /?metaQuery&action=openMetaQuery&mode=semantic HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<MetaQuery>
<Filters>
<Filter>Size > 1024,FileModifiedTime > 2025-06-03T09:20:47.999Z</Filter>
<Filter>Filename prefix (YWEvYmIv)</Filter>
</Filters>
<NotificationAttributes>
<Notifications>
<Notification>
<MNS>your-mns-topic-name</MNS>
</Notification>
</Notifications>
<WithFields>
<WithField>Insights</WithField>
</WithFields>
</NotificationAttributes>
<DatasetConfig>
<Insights>
<Language>zh-Hans</Language>
<Image>
<Caption>
<Enable>True</Enable>
</Caption>
</Image>
<Video>
<Caption>
<Enable>True</Enable>
</Caption>
</Video>
</Insights>
</DatasetConfig>
<IndexOptions>
<IgnoreObjectDelete>True</IgnoreObjectDelete>
</IndexOptions>
<RouteRule>
<Type>OSSTag</Type>
<AutoCreateDataset>True</AutoCreateDataset>
<OSSTagKey>routing-dataset</OSSTagKey>
</RouteRule>
</MetaQuery>请求头
此接口仅涉及公共请求头。更多信息,请参见公共请求头(Common Request Headers)。
请求元素
名称 | 类型 | 是否必选 | 示例值 | 描述 |
mode | 字符串 | 是 | basic | 检索模式。取值如下:
|
role | 字符串 | 否 | my-oss-role | 指定用于访问 OSS 服务的 RAM 角色名称。当请求中填写了 NotificationAttributes 时,此参数为必填项。 |
MetaQuery | 容器 | 否 | 不涉及 | 元数据查询的容器。 子节点:WorkflowParameters、Filters、NotificationAttributes、DatasetConfig、IndexOptions、RouteRule |
WorkflowParameters | 容器 | 否 | 不涉及 | 工作流参数容器,兼容旧版本 AI 内容感知基础开关。后续新功能不再通过该字段演进,推荐使用 父节点:MetaQuery 子节点:WorkflowParameter |
WorkflowParameter | 容器 | 否 | 不涉及 | 单个工作流参数的容器。 父节点:WorkflowParameters |
Name | 字符串 | 否 | VideoInsightEnable | 工作流参数的名称。取值如下:
|
Value | 字符串 | 否 | True | 工作流参数的值。取值如下:
|
Filters | 容器 | 否 | 不涉及 | 过滤条件的容器,支持逻辑运算 AND 和 OR 以及比较运算符,最多允许 5 个 OR 和 4 个 AND。 每个 Filter 表达式之间为 OR 关系。 单个 Filter 表达式中多个条件之间使用英文逗号( 子节点:Filter 父节点:MetaQuery |
Filter | 字符串 | 否 | Size > 1024,FileModifiedTime > 2025-06-03T09:20:47.999Z | 过滤条件表达式。支持的字段和比较运算符见附录:Filters 字段支持的变量和操作符。 父节点:Filters |
NotificationAttributes | 容器 | 否 | 不涉及 | 消息通知配置容器。用于配置文件索引消息通知相关的功能,在单个文件索引完成时发送消息通知到 MNS 主题。 子节点:Notifications、WithFields 父节点:MetaQuery |
Notifications | 容器 | 否 | 不涉及 | 消息通知配置容器。 子节点:Notification 父节点:NotificationAttributes |
Notification | 容器 | 否 | 不涉及 | 单个消息通知配置。 子节点:MNS 父节点:Notifications |
MNS | 字符串 | 否 | your-mns-topic-name | MNS 主题名称。 父节点:Notification |
WithFields | 容器 | 否 | 不涉及 | 消息通知容器,用于配置消息通知返回的字段。 子节点:WithField 父节点:NotificationAttributes |
WithField | 字符串 | 否 | Insights | 消息通知返回的字段。取值如下:
父节点:WithFields |
DatasetConfig | 容器 | 否 | 不涉及 | Dataset 级配置容器,用于配置内容感知细项与 Dataset 维度的智能分组。详细字段见 DatasetConfig 数据结构。 父节点:MetaQuery |
IndexOptions | 容器 | 否 | 不涉及 | 索引选项容器,控制元数据索引对 OSS Object 事件的响应行为。仅在 向量检索 时生效。 子节点:IgnoreObjectDelete、IgnoreEvents 父节点:MetaQuery |
IgnoreObjectDelete | 字符串 | 否 | True | 取值如下:
父节点:IndexOptions |
IgnoreEvents | 容器 | 否 | 不涉及 | 要忽略的 OSS 事件类型列表(底层配置,粒度更细)。多数场景用 IgnoreObjectDelete 即可。 子节点:IgnoreEvent 父节点:IndexOptions |
IgnoreEvent | 字符串 | 否 | ObjectRemoved:* | 要忽略的 OSS 事件类型。 父节点:IgnoreEvents |
RouteRule | 容器 | 否 | 不涉及 | 路由规则容器,启用多 Dataset 能力。按 OSS Object Tag 把不同对象的元数据路由到不同 Dataset。仅在 向量检索 时生效。 子节点:Type、AutoCreateDataset、OSSTagKey 父节点:MetaQuery |
Type | 字符串 | 是(若使用 RouteRule) | OSSTag | 路由类型。取值如下:
父节点:RouteRule |
AutoCreateDataset | 字符串 | 否 | True | 当 OSS Tag 命中的 Dataset 不存在时,是否自动创建。取值 True / False,默认 False。 父节点:RouteRule |
OSSTagKey | 字符串 | 是(Type 为 OSSTag 时) | routing-dataset | 路由所依据的 OSS Object Tag 的 Key。Object 该 Tag 的 Value 即为目标 Dataset 名。 父节点:RouteRule |
响应头
此接口仅涉及公共响应头。更多信息,请参见公共响应头(Common Response Headers)。
示例
请求示例
推荐使用 DatasetConfig 配置新版本内容感知能力:
POST /?metaQuery&action=openMetaQuery&mode=semantic HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Thu, 17 Apr 2025 13:08:38 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?xml version="1.0" encoding="UTF-8"?>
<MetaQuery>
<Filters>
<Filter>Size > 1024,FileModifiedTime > 2025-06-03T09:20:47.999Z</Filter>
<Filter>Filename prefix (YWEvYmIv)</Filter>
</Filters>
<NotificationAttributes>
<Notifications>
<Notification>
<MNS>your-mns-topic-name</MNS>
</Notification>
</Notifications>
<WithFields>
<WithField>Insights</WithField>
</WithFields>
</NotificationAttributes>
<DatasetConfig>
<Insights>
<Language>zh-Hans</Language>
<Image>
<Caption>
<Enable>True</Enable>
</Caption>
</Image>
<Video>
<Caption>
<Enable>True</Enable>
</Caption>
</Video>
</Insights>
</DatasetConfig>
<RouteRule>
<Type>OSSTag</Type>
<AutoCreateDataset>True</AutoCreateDataset>
<OSSTagKey>routing-dataset</OSSTagKey>
</RouteRule>
</MetaQuery>兼容旧版本的 WorkflowParameters 示例。该方式仅用于存量基础开关,后续新功能不再通过 WorkflowParameters 演进:
POST /?metaQuery&action=openMetaQuery&mode=semantic HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Thu, 17 Apr 2025 13:08:38 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
<?xml version="1.0" encoding="UTF-8"?>
<MetaQuery>
<WorkflowParameters>
<WorkflowParameter>
<Name>ImageInsightEnable</Name>
<Value>True</Value>
</WorkflowParameter>
<WorkflowParameter>
<Name>VideoInsightEnable</Name>
<Value>True</Value>
</WorkflowParameter>
</WorkflowParameters>
</MetaQuery>返回示例
HTTP/1.1 200 OK
x-oss-request-id: 5C1B138A109F4E405B2D****
Date: Thu, 17 Apr 2025 13:08:38 GMT
Content-Length: 0
Connection: keep-alive
Server: AliyunOSSMNS 消息通知格式
配置了消息通知参数时,单个文件索引完成会发送消息通知到 MNS 主题,消息通知格式如下:
{
"DatasetName": "your_dataset",
"RequestId": "EC8CC942-BA82-BC29-BB5E-3F193F9964CE",
"StartTime": "2026-02-27T19:20:35.190142739+08:00",
"EndTime": "2026-02-27T19:21:44.021599314+08:00",
"Success": true,
"Message": "",
"Files": [
{
"URI": "oss://your_bucket/dir/test.mp4",
"Error": "",
"ObjectStatus": "Indexed",
"Insights": {
"Video": {
"Caption": "室内角落静景",
"Description": "这是一个室内场景,画面分为左右两个视角:左边是一扇带白色窗帘的玻璃门,门外隐约可见模糊的室外景象;右边是一个角落,摆放着一张棕色皮质沙发、一把灰色椅子和一个木质柜子。"
}
}
}
],
"UserData": ""
}附录:Filters 字段支持的变量和操作符
名称 | 类型 | 支持的操作符 | 描述 | 过滤示例值 |
Size | 整型 | =:等于,等同于 == !=:不等于 >:大于 >=:大于等于 <:小于 <=:小于等于 | 文件大小过滤。 | Size > 9:文件大小大于 9 |
Filename | 字符串 | =:等于,等同于 == !=:不等于 prefix:包含前缀 suffix:包含后缀 in:在集合中 notin:不在集合中 | 文件名过滤。文件名需要经过 URL safe 的 Base64 编码。 | Filename == YWEvYmIvY2MuanBn:文件名为 aa/bb/cc.jpg Filename != YWEvYmIvY2MuanBn:文件名不为 aa/bb/cc.jpg Filename notin (YWEvYmIvY2MuanBn, YWEvYmIvZGQuanBn):文件名不为 aa/bb/cc.jpg 或 aa/bb/dd.jpg Filename in (YWEvYmIvY2MuanBn, YWEvYmIvZGQuanBn):文件名为 aa/bb/cc.jpg 或 aa/bb/dd.jpg Filename prefix (YWEvYmIv, YWEvY2Mv):文件名前缀为 "aa/bb/" 或 "aa/cc/" Filename suffix (LmpwZw, LnBuZw):文件名后缀为 ".jpg" 或 ".png" |
FileModifiedTime | 字符串 | =:等于,等同于 == !=:不等于 >:大于 >=:大于等于 <:小于 <=:小于等于 | 文件修改时间过滤,使用 RFC3339Nano 时间格式。 | FileModifiedTime > 2025-06-03T09:20:47.999Z:文件时间大于 2025-06-03T09:20:47.999Z |
OSSTagging.* | 字符串 | =:等于,等同于 == !=:不等于 !:不存在 key exists:存在 key prefix:包含前缀 suffix:包含后缀 in:在集合中 notin:不在集合中 | 标签过滤。标签的 Key 和 Value 都需要 URL safe 的 Base64 编码。 | OSSTagging.Zm9v == YWJj:存在标签 Key 为 "foo" 且 Value 为 "abc" !OSSTagging.Zm9v:不存在标签 Key 为 "foo" OSSTagging.Zm9v:存在标签 Key 为 "foo"(无需 exists 关键字) OSSTagging.Zm9v in (YWJj, ZWZn):存在标签 Key 为 "foo",Value 为 "abc" 或 "efg" OSSTagging.Zm9v prefix (YWEvYmIv, YWEvY2Mv):存在标签 Key 为 "foo",Value 前缀为 "aa/bb/" 或 "aa/cc/" |