OpenMetaQuery

更新时间:
复制 MD 格式

调用 OpenMetaQuery 接口为存储空间(Bucket)开启元数据管理功能并选择检索模式。开启后,OSS 会为 Bucket 创建元数据索引库并对所有文件(Object)建立元数据索引。索引库创建完成后,OSS 会对 Bucket 中新增的文件进行准实时增量扫描并建立元数据索引。

注意事项

  • 阿里云账号默认拥有开启元数据管理功能的权限。如需通过 RAM 用户开启,请确保 RAM 用户拥有 oss:MetaQuery 权限。

  • 同一个 Bucket 重复调用本接口会返回 MetaQueryAlreadyExist 错误。如需修改配置,请先调用 CloseMetaQuery 再重新打开。

  • 开启过程是异步的。调用成功后,可通过GetMetaQueryStatus查询当前状态、检索模式与已生效配置。

  • 配置消息通知时,需要为 RAM 角色授予访问指定 MNS 主题的权限。

  • RouteRuleIndexOptionsDatasetConfig 等高级字段仅在 向量检索 时生效;以 标量检索 调用时携带这些字段会返回 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

检索模式。取值如下:

  • basic(默认值):标量检索

  • semantic:向量检索

role

字符串

my-oss-role

指定用于访问 OSS 服务的 RAM 角色名称。当请求中填写了 NotificationAttributes 时,此参数为必填项。

MetaQuery

容器

不涉及

元数据查询的容器。

子节点:WorkflowParameters、Filters、NotificationAttributes、DatasetConfig、IndexOptions、RouteRule

WorkflowParameters

容器

不涉及

工作流参数容器,兼容旧版本 AI 内容感知基础开关。后续新功能不再通过该字段演进,推荐使用 DatasetConfig

父节点:MetaQuery

子节点:WorkflowParameter

WorkflowParameter

容器

不涉及

单个工作流参数的容器。

父节点:WorkflowParameters

Name

字符串

VideoInsightEnable

工作流参数的名称。取值如下:

  • VideoInsightEnable:视频内容感知开关

  • ImageInsightEnable:图片内容感知开关

  • UserDefinedLabelsEnable:用户自定义标签开关

Value

字符串

True

工作流参数的值。取值如下:

  • True:开启

  • False:关闭

Filters

容器

不涉及

过滤条件的容器,支持逻辑运算 AND 和 OR 以及比较运算符,最多允许 5 个 OR 和 4 个 AND。

每个 Filter 表达式之间为 OR 关系。

单个 Filter 表达式中多个条件之间使用英文逗号(,)分隔,表示 AND 关系。

子节点: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

消息通知返回的字段。取值如下:

  • Insights:AI 分析后对该文件的简短描述

  • Labels:AI 分析后对该文件识别的标签

父节点:WithFields

DatasetConfig

容器

不涉及

Dataset 级配置容器,用于配置内容感知细项与 Dataset 维度的智能分组。详细字段见 DatasetConfig 数据结构

父节点:MetaQuery

IndexOptions

容器

不涉及

索引选项容器,控制元数据索引对 OSS Object 事件的响应行为。仅在 向量检索 时生效。

子节点:IgnoreObjectDelete、IgnoreEvents

父节点:MetaQuery

IgnoreObjectDelete

字符串

True

取值如下:

  • True:Object 删除后其元数据不会自动从索引中移除,需通过 DeleteFileMeta 手动清理

  • False(默认):Object 删除时同步移除元数据

父节点:IndexOptions

IgnoreEvents

容器

不涉及

要忽略的 OSS 事件类型列表(底层配置,粒度更细)。多数场景用 IgnoreObjectDelete 即可。

子节点:IgnoreEvent

父节点:IndexOptions

IgnoreEvent

字符串

ObjectRemoved:*

要忽略的 OSS 事件类型。

父节点:IgnoreEvents

RouteRule

容器

不涉及

路由规则容器,启用多 Dataset 能力。按 OSS Object Tag 把不同对象的元数据路由到不同 Dataset。仅在 向量检索 时生效。

子节点:Type、AutoCreateDataset、OSSTagKey

父节点:MetaQuery

Type

字符串

是(若使用 RouteRule)

OSSTag

路由类型。取值如下:

  • default:不做按规则路由,所有元数据进入系统默认 Dataset

  • OSSTag:按 Object 上指定 Tag 的 Value 路由到同名 Dataset

父节点: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: AliyunOSS

MNS 消息通知格式

配置了消息通知参数时,单个文件索引完成会发送消息通知到 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/"