すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:スカラー検索を使用してメタデータプロパティに基づいて OSS 内のファイルをクエリする

最終更新日:Nov 10, 2025

スカラー検索は、Object Storage Service (OSS) の機能で、オブジェクトのメタデータをインデックス化します。カスタム条件を使用して、オブジェクトのリストを迅速にフィルタリングおよび取得できます。この機能は、データ構造の管理と理解を深めるのに役立ち、その後のクエリ、統計分析、オブジェクト管理を簡素化します。

シナリオ

データ監査

スカラー検索を使用すると、データ監査や規制要件を満たすためにファイルを迅速に見つけることができます。たとえば、金融サービス業界では、カスタムタグやアクセス権限などのメタデータでファイルをフィルタリングできます。これにより、特定の感度レベルや権限を持つファイルを特定し、データ監査の効率を向上させることができます。

エンタープライズデータのバックアップとアーカイブ

エンタープライズデータのバックアップとアーカイブを行う際に、スカラー検索を使用して特定の日付や特定のタイプのファイルを迅速に取得できます。作成時間、ストレージクラス、またはカスタムタグなどのメタデータでフィルタリングできます。これにより、既存データやアーカイブされたレコードを迅速に回復できます。

制限

  • リージョン制限

    スカラー検索機能は、中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (深圳)、中国 (広州)、中国 (成都)、中国 (ウランチャブ)、中国 (香港)、シンガポール、インドネシア (ジャカルタ)、ドイツ (フランクフルト)、米国 (バージニア)、米国 (シリコンバレー)、および英国 (ロンドン) リージョンのバケットで利用できます。

  • バケットの制限

    スカラー検索が有効になっているバケットには、最大 500 億個のファイルを含めることができます。バケット内のファイル数が 500 億個を超えると、取得パフォーマンスが低下する可能性があります。より大規模なデータを処理するには、テクニカルサポート にお問い合わせの上、評価を依頼してください。

  • マルチパートアップロード

    マルチパートアップロードを使用して作成されたオブジェクトの場合、クエリ結果には CompleteMultipartUpload 操作を使用してパートからアセンブルされた完全なオブジェクトのみが表示されます。初期化されたが完了または中止されていないパートは、結果に含まれません。

パフォーマンスリファレンス

OSS スカラー検索モードの以下のパフォーマンスメトリックは、参考用です。

  • 既存ファイルのインデックス生成時間の参考

    • 単一バケット内の 1 億ファイル: 4 時間

    • 単一バケット内の 10 億ファイル: 約 10 時間

    • 単一バケット内の 100 億ファイル: 約 1~3 日

    • 単一バケット内の 200 億ファイル: 約 2~4 日

    • 単一バケット内の 300 億ファイル: 約 3~6 日

    • 単一バケット内の 500 億ファイル: 約 6~10 日

    • バケットに 10 億を超えるファイルが含まれ、ファイルにタグがある場合、インデックスの生成には上記の時間よりも長くかかります。

  • 増分ファイルのインデックス更新時間の参考

    デフォルトでは、OSS はスカラー検索モードに対して追加で 5,000 クエリ/秒 (QPS) を提供します。これは、OSS が 1 秒あたり 5,000 件のファイルインデックス更新リクエストを処理できることを意味します。この QPS は、バケットのサービス品質 (QoS) には影響しません。バケット内の追加、変更、または削除の QPS がデフォルトの 5,000 未満の場合、ファイルがアップロードまたは変更されてからファイルが取得可能になるまでのレイテンシは通常数分です。QPS がデフォルトの 5,000 を超える場合は、テクニカルサポート にお問い合わせください。お客様の状況を評価し、技術支援を提供します。

  • ファイル取得の応答パフォーマンス

    取得結果は数秒で返されます。デフォルトのタイムアウト期間は 30 秒です。

スカラー検索を有効にする

OSS コンソールを使用する

中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (深圳)、中国 (広州)、中国 (成都)、中国 (香港)、シンガポール、インドネシア (ジャカルタ)、およびドイツ (フランクフルト) リージョンのバケットの場合

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、オブジェクト管理 > データのインデックス作成 を選択します。

  4. [データインデックス] ページで、データインデックス機能を初めて使用する場合は、プロンプトに従って AliyunMetaQueryDefaultRole ロールに権限を付与します。これにより、OSS サービスがバケット内のデータを管理できるようになります。権限を付与した後、[データインデックスを有効にする] をクリックします。

  5. [スカラー検索] を選択し、[有効にする] をクリックします。

    説明

    スカラー検索を有効にするには時間がかかります。正確な所要時間は、バケット内のオブジェクトの数によって異なります。

英国 (ロンドン)、中国 (ウランチャブ)、米国 (バージニア)、および米国 (シリコンバレー) リージョンのバケットの場合

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、オブジェクト管理 > データのインデックス作成 を選択します。データインデックス機能を初めて使用する場合は、プロンプトに従って AliyunMetaQueryDefaultRole ロールに権限を付与します。これにより、OSS サービスがバケット内のデータを管理できるようになります。

  4. [メタデータ管理] をオンにします。

    説明

    メタデータ管理を有効にするには時間がかかります。正確な所要時間は、バケット内のオブジェクトの数によって異なります。

Alibaba Cloud SDK を使用する

スカラー検索機能を使用する前に、指定したバケットの メタデータ管理 機能を有効にする必要があります。次のコードに例を示します。

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.MetaQueryMode;

public class OpenMetaQuery {
    public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // バケットの名前を指定します。例: examplebucket。
        String bucketName = "examplebucket";
        // 環境変数からアクセス資格情報を取得します。
        // サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        //OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // MetaSearch 機能を有効にします。
            ossClient.openMetaQuery(bucketName);
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // OSSClient インスタンスをシャットダウンします。
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Python

import argparse
import alibabacloud_oss_v2 as oss

# コマンドラインパラメーターパーサーを作成し、説明を追加します。
parser = argparse.ArgumentParser(description="open meta query sample")
# 必須の --region コマンドラインパラメーターを追加します。これはバケットが配置されているリージョンを指定します。
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# 必須の --bucket コマンドラインパラメーターを追加します。これは操作対象のバケットの名前を指定します。
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# オプションの --endpoint コマンドラインパラメーターを追加します。これは OSS にアクセスする際に使用するドメイン名を指定します。
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # コマンドライン引数を解析します。
    args = parser.parse_args()

    # 環境変数から認証情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK が提供するデフォルトの構成を使用します。
    cfg = oss.config.load_default()
    # 認証情報プロバイダーを設定します。
    cfg.credentials_provider = credentials_provider
    # コマンドライン引数に基づいてリージョンを設定します。
    cfg.region = args.region
    # エンドポイントが提供されている場合、構成内のエンドポイントを更新します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # メタクエリを有効にするリクエストを開始します。
    result = client.open_meta_query(oss.OpenMetaQueryRequest(
            bucket=args.bucket,
    ))

    # リクエストのステータスコードとリクエスト ID を出力します。
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          )

# メインプログラムとして実行された場合、main 関数を呼び出します。
if __name__ == "__main__":
    main()

Go

package main

import (
	"context"
	"flag"   
	"log"     

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"          
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" 
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)

// init 関数は、プログラムを初期化するために main 関数の前に実行されます。
func init() {
	// リージョンを指定するためのコマンドラインパラメーターを設定します。
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// バケット名を指定するためのコマンドラインパラメーターを設定します。
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // コマンドラインパラメーターを解析します。

	// バケット名が指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // エラーをログに記録し、プログラムを終了します。
	}

	// リージョンが指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // エラーをログに記録し、プログラムを終了します。
	}

	// クライアント構成を作成し、資格情報プロバイダーとして環境変数を使用します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // 構成を使用して OSS クライアントインスタンスを作成します。

	// 特定のバケットのメタデータ管理機能を有効にするために OpenMetaQuery リクエストを作成します。
	request := &oss.OpenMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // 操作対象のバケットの名前を指定します。
	}
	result, err := client.OpenMetaQuery(context.TODO(), request) // バケットのメタデータ管理機能を有効にするリクエストを実行します。
	if err != nil {
		log.Fatalf("failed to open meta query %v", err) // エラーが発生した場合、エラーメッセージをログに記録し、プログラムを終了します。
	}

	log.Printf("open meta query result:%#v\n", result) // メタデータ管理を有効にした結果を出力します。
}

PHP

<?php

// 依存関係ライブラリが正しくロードされるように、オートローダーファイルをインポートします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // バケットが配置されているリージョン。このパラメーターは必須です。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 他のサービスが OSS にアクセスするために使用できるエンドポイント。このパラメーターはオプションです。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケットの名前。このパラメーターは必須です。
];

// 引数の説明を getopt で必要なロングオプション形式に変換します。
// 各引数の後のコロン (:) は、引数が値を必要とすることを示します。
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が指定されているか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // 引数のヘルプ情報を取得します。
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // 必須の引数が指定されていない場合、プログラムを終了します。
    }
}

// 解析された引数から値を抽出します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数から資格情報を読み込みます。
// EnvironmentVariableCredentialsProvider を使用して、環境変数からアクセスキー ID とアクセスキーシークレットを読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 資格情報プロバイダーを設定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合、エンドポイントを設定します。
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// バケットのスカラー検索機能を有効にするために OpenMetaQueryRequest オブジェクトを作成します。
$request = new Oss\Models\OpenMetaQueryRequest(
    bucket: $bucket
);

// スカラー検索機能を有効にする操作を実行します。
$result = $client->openMetaQuery($request);

// スカラー検索機能を有効にした結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。たとえば、200 はリクエストが成功したことを示します。
    'request id:' . $result->requestId . PHP_EOL     // リクエスト ID。リクエストのデバッグや追跡に使用されます。
);

ossutil を使用する

次の例は、examplebucket という名前のバケットのメタデータ管理機能を有効にする方法を示しています。

ossutil api open-meta-query --bucket examplebucket

このコマンドの詳細については、「open-meta-query」をご参照ください。

スカラー検索クエリを開始する

OSS コンソールを使用する

次の例では、2024 年 9 月 11 日 00:00 から 2024 年 9 月 12 日 00:00 の間に最終更新され、500 KB 未満のすべてのファイルを検索する方法を示します。出力はファイルサイズで昇順にソートされ、最大ファイルサイズが計算されます。

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、オブジェクト管理 > データのインデックス作成 を選択します。

  4. 次のパラメーターを構成し、他のパラメーターはデフォルト設定のままにします。

    • [最終更新日時] を 2024 年 9 月 11 日 00:00 から 2024 年 9 月 12 日 00:00 の範囲に設定します。

    • [ファイルサイズ] を 500 KB 未満に設定します。

  5. [その他のフィルター条件を展開] をクリックします。

    • [オブジェクトの並べ替え方法] で、[ファイルサイズ][昇順] を選択します。

    • [データ集約] で、[ファイルサイズ][最大値] を選択します。

    image

  6. [クエリ] をクリックします。2 つのファイルがクエリ条件を満たしています。次の図に示すように、最大ファイルサイズは 434 KB です。

    image

    すべてのクエリ条件と出力設定の詳細については、「クエリ条件と出力設定」をご参照ください。

Alibaba Cloud SDK を使用する

次のコードは、スカラー検索機能を使用して 指定された条件を満たすオブジェクトをクエリする 方法を示しています。

Java

その他のコード例については、「スカラー検索 (Java SDK)」をご参照ください。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;

public class DoMetaQuery {
    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // バケットの名前を指定します。例: examplebucket。
        String bucketName = "examplebucket";
        // 環境変数からアクセス資格情報を取得します。
        // サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // 特定の条件を満たすオブジェクトをクエリし、特定のフィールドに基づいて指定された順序でオブジェクトを返します。
            int maxResults = 20;
            // サイズが 1,048,576 バイト未満のオブジェクトをクエリし、一度に最大 20 個のオブジェクトを返し、オブジェクトを昇順にソートします。
            String query = "{\"Field\": \"Size\",\"Value\": \"1048576\",\"Operation\": \"lt\"}";
            String sort = "Size";
            DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort);
            Aggregation aggregationRequest = new Aggregation();
            Aggregations aggregations = new Aggregations();
            List<Aggregation> aggregationList = new ArrayList<Aggregation>();
            // 集約操作で使用されるフィールドの名前を指定します。
            aggregationRequest.setField("Size");
            // 集約操作で使用される演算子を指定します。max は最大値を示します。
            aggregationRequest.setOperation("max");
            aggregationList.add(aggregationRequest);
            aggregations.setAggregation(aggregationList);

            // 集約操作を指定します。
            doMetaQueryRequest.setAggregations(aggregations);
            doMetaQueryRequest.setOrder(SortOrder.ASC);
            DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
            if(doMetaQueryResult.getFiles() != null){
                for(ObjectFile file : doMetaQueryResult.getFiles().getFile()){
                    System.out.println("Filename: " + file.getFilename());
                    // オブジェクトのコンテンツを識別するために使用される ETag 値をクエリします。
                    System.out.println("ETag: " + file.getETag());
                    // オブジェクトのアクセス制御リスト (ACL) をクエリします。
                    System.out.println("ObjectACL: " + file.getObjectACL());
                    // オブジェクトのタイプをクエリします。
                    System.out.println("OssObjectType: " + file.getOssObjectType());
                    // オブジェクトのストレージクラスをクエリします。
                    System.out.println("OssStorageClass: " + file.getOssStorageClass());
                    // オブジェクトのタグ数をクエリします。
                    System.out.println("TaggingCount: " + file.getOssTaggingCount());
                    if(file.getOssTagging() != null){
                        for(Tagging tag : file.getOssTagging().getTagging()){
                            System.out.println("Key: " + tag.getKey());
                            System.out.println("Value: " + tag.getValue());
                        }
                    }
                    if(file.getOssUserMeta() != null){
                        for(UserMeta meta : file.getOssUserMeta().getUserMeta()){
                            System.out.println("Key: " + meta.getKey());
                            System.out.println("Value: " + meta.getValue());
                        }
                    }
                }
            } else if(doMetaQueryResult.getAggregations() != null){
                for(Aggregation aggre : doMetaQueryResult.getAggregations().getAggregation()){
                    // 集約が実行されるフィールドをクエリします。
                    System.out.println("Field: " + aggre.getField());
                    // 集約演算子をクエリします。
                    System.out.println("Operation: " + aggre.getOperation());
                    // 集約操作の結果をクエリします。
                    System.out.println("Value: " + aggre.getValue());
                    if(aggre.getGroups() != null && aggre.getGroups().getGroup().size() > 0){
                        // 集約の値をクエリします。
                        System.out.println("Groups value: " + aggre.getGroups().getGroup().get(0).getValue());
                        // 集約の合計数をクエリします。
                        System.out.println("Groups count: " + aggre.getGroups().getGroup().get(0).getCount());
                    }
                }
            } else {
                System.out.println("NextToken: " + doMetaQueryResult.getNextToken());
            }
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // OSSClient インスタンスをシャットダウンします。
            ossClient.shutdown();
        }
    }
}

Python

その他のコード例については、「スカラー検索」をご参照ください。

import argparse
import alibabacloud_oss_v2 as oss

# ユーザー入力パラメーターを受け入れるためのコマンドラインパラメーターパーサーを作成します。
parser = argparse.ArgumentParser(description="do meta query sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # コマンドライン引数を解析します。
    args = parser.parse_args()

    # 環境変数から認証情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を使用します。
    cfg = oss.config.load_default()
    # 認証プロバイダーを設定します。
    cfg.credentials_provider = credentials_provider
    # 入力パラメーターに基づいてリージョンを設定します。
    cfg.region = args.region
    # エンドポイントが提供されている場合、構成内のエンドポイントを更新します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # メタクエリ操作を実行します。
    result = client.do_meta_query(oss.DoMetaQueryRequest(
            bucket=args.bucket,  # クエリするバケットを指定します。
            meta_query=oss.MetaQuery(  # クエリの具体的な内容を定義します。
                aggregations=oss.MetaQueryAggregations(  # 集約操作を定義します。
                    aggregations=[  # 集約リスト。
                        oss.MetaQueryAggregation(  # 最初の集約: 合計サイズを計算します。
                            field='Size',
                            operation='sum',
                        ),
                        oss.MetaQueryAggregation(  # 2 番目の集約: 最大値を見つけます。
                            field='Size',
                            operation='max',
                        )
                    ],
                ),
                next_token='',  # ページネーショントークン。
                max_results=80369,  # 返す結果の最大数。
                query='{"Field": "Size","Value": "1048576","Operation": "gt"}',  # クエリ条件。
                sort='Size',  # ソートフィールド。
                order=oss.MetaQueryOrderType.DESC,  # ソート順。
            ),
    ))

    # クエリ結果の基本情報を出力します。
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          # 以下のコメントアウトされたセクションは、必要に応じて有効にして、より詳細な情報を取得できます。
          # f' files: {result.files},'
          # f' file: {result.files.file},'
          # f' file modified time: {result.files.file.file_modified_time},'
          # f' etag: {result.files.file.etag},'
          # f' server side encryption: {result.files.file.server_side_encryption},'
          # f' oss tagging count: {result.files.file.oss_tagging_count},'
          # f' oss tagging: {result.files.file.oss_tagging},'
          # f' key: {result.files.file.oss_tagging.taggings[0].key},'
          # f' value: {result.files.file.oss_tagging.taggings[0].value},'
          # f' key: {result.files.file.oss_tagging.taggings[1].key},'
          # f' value: {result.files.file.oss_tagging.taggings[1].value},'
          # f' oss user meta: {result.files.file.oss_user_meta},'
          # f' key: {result.files.file.oss_user_meta.user_metas[0].key},'
          # f' value: {result.files.file.oss_user_meta.user_metas[0].value},'
          # f' key: {result.files.file.oss_user_meta.user_metas[1].key},'
          # f' value: {result.files.file.oss_user_meta.user_metas[1].value},'
          # f' filename: {result.files.file.filename},'
          # f' size: {result.files.file.size},'
          # f' oss object type: {result.files.file.oss_object_type},'
          # f' oss storage class: {result.files.file.oss_storage_class},'
          # f' object acl: {result.files.file.object_acl},'
          # f' oss crc64: {result.files.file.oss_crc64},'
          # f' server side encryption customer algorithm: {result.files.file.server_side_encryption_customer_algorithm},'
          # f' aggregations: {result.aggregations},'
          f' field: {result.aggregations.aggregations[0].field},'
          f' operation: {result.aggregations.aggregations[0].operation},'
          f' field: {result.aggregations.aggregations[1].field},'
          f' operation: {result.aggregations.aggregations[1].operation},'
          f' next token: {result.next_token},'
    )

    # ファイル情報が存在する場合、タグとユーザー定義メタデータを出力します。
    if result.files:
        if result.files.file.oss_tagging.taggings:
            for r in result.files.file.oss_tagging.taggings:
                print(f'result: key: {r.key}, value: {r.value}')
        if result.files.file.oss_user_meta.user_metas:
            for r in result.files.file.oss_user_meta.user_metas:
                print(f'result: key: {r.key}, value: {r.value}')
    # すべての集約の結果を出力します。
    if result.aggregations.aggregations:
        for r in result.aggregations.aggregations:
            print(f'result: field: {r.field}, operation: {r.operation}')

if __name__ == "__main__":
    main()

Go

その他のコード例については、「スカラー検索 (Go SDK V2)」をご参照ください。

package main

import (
	"context"
	"flag"
	"fmt"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)

// init 関数は、プログラムを初期化するために main 関数の前に実行されます。
func init() {
	// リージョンを指定するためのコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// バケット名を指定するためのコマンドラインパラメーターを設定します。デフォルト値は空の文字列です。
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // コマンドラインパラメーターを解析します。

	// バケット名が指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// リージョンが指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// クライアント構成を作成し、資格情報プロバイダーとして環境変数と指定されたリージョンを使用します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // 構成を使用して OSS クライアントインスタンスを作成します。

	// 特定の条件を満たすオブジェクトをクエリするために DoMetaQuery リクエストを作成します。
	request := &oss.DoMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // クエリするバケットの名前を指定します。
		MetaQuery: &oss.MetaQuery{
			Query: oss.Ptr(`{"Field": "Size","Value": "1048576","Operation": "gt"}`), // クエリ条件: 1 MB より大きいオブジェクト。
			Sort:  oss.Ptr("Size"),                                                   // ソートフィールド: オブジェクトサイズでソートします。
			Order: oss.Ptr(oss.MetaQueryOrderAsc),                                    // ソート順: 昇順。
		},
	}
	result, err := client.DoMetaQuery(context.TODO(), request) // メタデータクエリを実行するためにリクエストを送信します。
	if err != nil {
		log.Fatalf("failed to do meta query %v", err)
	}

	// NextToken を出力します。これは、次のページからデータを取得するためのページ分割クエリに使用されます。
	fmt.Printf("NextToken:%s\n", *result.NextToken)

	// 返された結果を走査し、各ファイルの詳細を出力します。
	for _, file := range result.Files {
		fmt.Printf("File name: %s\n", *file.Filename)
		fmt.Printf("size: %d\n", file.Size)
		fmt.Printf("File Modified Time:%s\n", *file.FileModifiedTime)
		fmt.Printf("Oss Object Type:%s\n", *file.OSSObjectType)
		fmt.Printf("Oss Storage Class:%s\n", *file.OSSStorageClass)
		fmt.Printf("Object ACL:%s\n", *file.ObjectACL)
		fmt.Printf("ETag:%s\n", *file.ETag)
		fmt.Printf("Oss CRC64:%s\n", *file.OSSCRC64)
		if file.OSSTaggingCount != nil {
			fmt.Printf("Oss Tagging Count:%d\n", *file.OSSTaggingCount)
		}

		// オブジェクトのタグ情報を出力します。
		for _, tagging := range file.OSSTagging {
			fmt.Printf("Oss Tagging Key:%s\n", *tagging.Key)
			fmt.Printf("Oss Tagging Value:%s\n", *tagging.Value)
		}

		// ユーザー定義のメタデータを出力します。
		for _, userMeta := range file.OSSUserMeta {
			fmt.Printf("Oss User Meta Key:%s\n", *userMeta.Key)
			fmt.Printf("Oss User Meta Key Value:%s\n", *userMeta.Value)
		}
	}
}

PHP

その他のコード例については、「スカラー検索 (PHP SDK V2)」をご参照ください。

<?php

// 依存関係ライブラリが正しくロードされるように、オートローダーファイルをインポートします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // バケットが配置されているリージョン。このパラメーターは必須です。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 他のサービスが OSS にアクセスするために使用できるエンドポイント。このパラメーターはオプションです。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケットの名前。このパラメーターは必須です。
];

// 引数の説明を getopt で必要なロングオプション形式に変換します。
// 各引数の後のコロン (:) は、引数が値を必要とすることを示します。
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が指定されているか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // 引数のヘルプ情報を取得します。
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // 必須の引数が指定されていない場合、プログラムを終了します。
    }
}

// 解析された引数から値を抽出します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数から資格情報を読み込みます。
// EnvironmentVariableCredentialsProvider を使用して、環境変数からアクセスキー ID とアクセスキーシークレットを読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 資格情報プロバイダーを設定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合、エンドポイントを設定します。
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// メタデータクエリ操作を実行するために DoMetaQueryRequest オブジェクトを作成します。
$request = new \AlibabaCloud\Oss\V2\Models\DoMetaQueryRequest(
    bucket: $bucket,
    metaQuery: new \AlibabaCloud\Oss\V2\Models\MetaQuery(
        maxResults: 5, // 返す結果の最大数。
        query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}", // クエリ条件: サイズが 1 MB より大きいオブジェクト。
        sort: 'Size', // オブジェクトサイズでソートします。
        order: \AlibabaCloud\Oss\V2\Models\MetaQueryOrderType::ASC, // 昇順でソートします。
        aggregations: new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregations( // 集約操作
            aggregations: [
                new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
                    field: 'Size', // オブジェクトサイズフィールド。
                    operation: 'sum' // 集約操作: 合計。
                ),
                new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
                    field: 'Size', // オブジェクトサイズフィールド。
                    operation: 'max' // 集約操作: 最大値。
                ),
            ]
        )
    )
);

// メタデータクエリ操作を実行します。
$result = $client->doMetaQuery($request);

// メタデータクエリの結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。たとえば、200 はリクエストが成功したことを示します。
    'request id:' . $result->requestId . PHP_EOL .   // リクエスト ID。リクエストのデバッグや追跡に使用されます。
    'result:' . var_export($result, true) . PHP_EOL  // クエリ結果。一致したオブジェクトとその集約データが含まれます。
);

ossutil を使用する

ossutil コマンドラインインターフェイス (CLI) を使用して、スカラー検索機能を使用して指定された条件を満たすオブジェクトをクエリできます。ossutil をインストールするには、「ossutil のインストール」をご参照ください。

次の例は、examplebucket という名前のバケットで指定された条件を満たすファイルをクエリする方法を示しています。

ossutil api do-meta-query --bucket examplebucket --meta-query "{\"MaxResults\":\"5\",\"Query\":\"{\\\"Field\\\": \\\"Size\\\",\\\"Value\\\": \\\"1048576\\\",\\\"Operation\\\": \\\"gt\\\"}\",\"Sort\":\"Size\",\"Order\":\"asc\",\"Aggregations\":{\"Aggregation\":[{\"Field\":\"Size\",\"Operation\":\"sum\"},{\"Field\":\"Size\",\"Operation\":\"max\"}]}}"

このコマンドの詳細については、「do-meta-query」をご参照ください。

スカラー検索を無効にする

  • この機能を無効にしても、OSS にすでに保存されているデータには影響しません。この機能を再度有効にすると、システムは既存のファイルを再スキャンしてインデックスを再構築します。このプロセスには時間がかかり、所要時間はバケット内のファイルの数によって異なります。

  • この機能を無効にした後、1 時間以内に課金が停止します。ただし、請求書の生成が遅れる場合があります。請求書を監視することをお勧めします。

OSS コンソールを使用する

OSS コンソールにログインします。[データインデックス] ページで、[メタデータ管理] の横にある [無効にする] をクリックし、プロンプトに従って操作を確定します。

image

Alibaba Cloud SDK を使用する

Java

その他のコード例については、「スカラー検索 (Java SDK)」をご参照ください。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;

public class CloseMetaQuery {
    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントが使用されます。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // バケットの名前を指定します。例: examplebucket。
        String bucketName = "examplebucket";
        // 環境変数からアクセス資格情報を取得します。
        // サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
        String region = "cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出して関連リソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // バケットの MetaSearch 機能を無効にします。
            ossClient.closeMetaQuery(bucketName);
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // OSSClient インスタンスをシャットダウンします。
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Python

その他のコード例については、「スカラー検索」をご参照ください。

import argparse
import alibabacloud_oss_v2 as oss

# コマンドライン引数を処理するための ArgumentParser オブジェクトを作成します。
parser = argparse.ArgumentParser(description="close meta query sample")
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # コマンドライン引数を解析します。
    args = parser.parse_args()

    # 環境変数から資格情報を読み込みます。
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # SDK のデフォルト構成を使用します。
    cfg = oss.config.load_default()
    # 資格情報プロバイダーを環境変数から取得したものに設定します。
    cfg.credentials_provider = credentials_provider
    # 構成にリージョン情報を設定します。
    cfg.region = args.region
    # エンドポイントが提供されている場合、構成にエンドポイントを設定します。
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # OSS クライアントを作成します。
    client = oss.Client(cfg)

    # close_meta_query メソッドを呼び出して、指定されたバケットのメタクエリ機能を無効にします。
    result = client.close_meta_query(oss.CloseMetaQueryRequest(
            bucket=args.bucket,
    ))

    # 応答のステータスコードとリクエスト ID を出力します。
    print(f'status code: {result.status_code}, request id: {result.request_id}')

# このスクリプトが直接実行された場合、main 関数を呼び出します。
if __name__ == "__main__":
    main()

Go

その他のコード例については、「スカラー検索 (Go SDK V2)」をご参照ください。

package main

import (
	"context"
	"flag"    
	"log"    

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"          
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials" 
)

var (
	region     string // コマンドラインから取得したリージョン情報を格納する変数を定義します。
	bucketName string // コマンドラインから取得したバケット名を格納する変数を定義します。
)

// init 関数は、プログラムを初期化するために main 関数の前に実行されます。
func init() {
	// リージョンを指定するためのコマンドラインパラメーターを設定します。
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// バケット名を指定するためのコマンドラインパラメーターを設定します。
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}


func main() {
	flag.Parse() // コマンドラインパラメーターを解析します。

	// バケット名が指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // エラーをログに記録し、プログラムを終了します。
	}

	// リージョンが指定されているか確認します。指定されていない場合、プログラムはデフォルトのパラメーターを出力して終了します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // エラーをログに記録し、プログラムを終了します。
	}

	// クライアント構成を作成し、資格情報プロバイダーとして環境変数と指定されたリージョンを使用します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // OSS クライアントインスタンスを作成します。

	// 特定のバケットのメタデータ管理機能を無効にするために CloseMetaQuery リクエストを作成します。
	request := &oss.CloseMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // 操作対象のバケットの名前を指定します。
	}
	result, err := client.CloseMetaQuery(context.TODO(), request) // バケットのメタデータ管理機能を無効にするリクエストを実行します。
	if err != nil {
		log.Fatalf("failed to close meta query %v", err) // エラーが発生した場合、エラーメッセージをログに記録し、プログラムを終了します。
	}

	log.Printf("close meta query result:%#v\n", result)
}

PHP

その他のコード例については、「スカラー検索 (PHP SDK V2)」をご参照ください。

<?php

// 依存関係ライブラリが正しくロードされるように、オートローダーファイルをインポートします。
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// コマンドライン引数の説明を定義します。
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // バケットが配置されているリージョン。このパラメーターは必須です。
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // 他のサービスが OSS にアクセスするために使用できるエンドポイント。このパラメーターはオプションです。
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // バケットの名前。このパラメーターは必須です。
];

// 引数の説明を getopt で必要なロングオプション形式に変換します。
// 各引数の後のコロン (:) は、引数が値を必要とすることを示します。
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// コマンドライン引数を解析します。
$options = getopt("", $longopts);

// 必須の引数が指定されているか確認します。
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // 引数のヘルプ情報を取得します。
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // 必須の引数が指定されていない場合、プログラムを終了します。
    }
}

// 解析された引数から値を抽出します。
$region = $options["region"]; // バケットが配置されているリージョン。
$bucket = $options["bucket"]; // バケットの名前。

// 環境変数から資格情報を読み込みます。
// EnvironmentVariableCredentialsProvider を使用して、環境変数からアクセスキー ID とアクセスキーシークレットを読み取ります。
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// SDK のデフォルト構成を使用します。
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // 資格情報プロバイダーを設定します。
$cfg->setRegion($region); // バケットが配置されているリージョンを設定します。
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // エンドポイントが提供されている場合、エンドポイントを設定します。
}

// OSS クライアントインスタンスを作成します。
$client = new Oss\Client($cfg);

// バケットの取得機能を無効にするために CloseMetaQueryRequest オブジェクトを作成します。
$request = new \AlibabaCloud\Oss\V2\Models\CloseMetaQueryRequest(
    bucket: $bucket
);

// 取得機能を無効にする操作を実行します。
$result = $client->closeMetaQuery($request);

// 取得機能を無効にした結果を出力します。
printf(
    'status code:' . $result->statusCode . PHP_EOL . // HTTP ステータスコード。たとえば、200 はリクエストが成功したことを示します。
    'request id:' . $result->requestId . PHP_EOL     // リクエスト ID。リクエストのデバッグや追跡に使用されます。
);

ossutil を使用する

次のサンプルコマンドは、examplebucket という名前のバケットのメタデータ管理機能を無効にする方法を示しています。

ossutil api close-meta-query --bucket examplebucket

このコマンドの詳細については、「close-meta-query」をご参照ください。

クエリ条件と出力設定

クエリ条件

次の表に、すべてのクエリ条件を示します。必要に応じて、個別にまたは組み合わせて設定できます。

OSS メタデータクエリ条件

クエリ条件

説明

ストレージクラス

デフォルトでは、すべての OSS ストレージクラスが選択されます: 標準、低頻度アクセス (IA)、アーカイブ、コールドアーカイブ、およびディープコールドアーカイブ。クエリ結果に表示したいオブジェクトのストレージクラスを選択できます。

ACL (アクセス制御リスト)

デフォルトでは、OSS がサポートする 4 つのアクセス制御リスト (ACL) がすべて選択されます: バケットから継承、プライベート、パブリック読み取り、およびパブリック読み書き。クエリ結果に表示したいオブジェクトの ACL を選択できます。

オブジェクト名

あいまい一致等しい をサポートします。クエリ結果に特定のファイル (例: exampleobject.txt) を表示したい場合、次のいずれかの方法でファイルを照合できます:

  • 等しい を選択し、完全なファイル名 exampleobject.txt を入力します。

  • あいまい一致 を選択し、プレフィックスまたはサフィックス (例: example または .txt) を入力します。

    重要

    あいまい一致は、オブジェクト名の任意の文字にヒットする可能性があります。たとえば、test と入力すると、クエリ結果には localfolder/test/.example.jpglocalfolder/test.jpg が含まれます。

アップロードの種類

デフォルトでは、OSS がサポートする 4 つのオブジェクトタイプがすべて選択されます。クエリ結果に表示したいオブジェクトタイプを選択できます。オブジェクトタイプは次のとおりです:

  • 通常: シンプルアップロードで作成されたオブジェクト。

  • マルチパート: マルチパートアップロードで作成されたオブジェクト。

  • 追加可能: 追加アップロードで作成されたオブジェクト。

  • シンボリックリンク: オブジェクトへの迅速なアクセスのために作成されたシンボリックリンク。

最終更新日時

オブジェクトの最終更新日時の 開始日[終了日] を指定します。時間は秒単位で正確です。

オブジェクトサイズ

5 つのフィルター条件をサポートします: 等しい次の値より大きい:指定の値以上指定の値より小さい、および 指定の値以下。ファイルサイズの単位は KB です。

オブジェクトバージョン

オブジェクトの現在のバージョンのみをクエリできます。

オブジェクトの ETag とタグのクエリ条件

ETag とタグに基づいてオブジェクトをフィルタリングして見つけるには、クエリ結果に表示したいオブジェクトの ETag またはタグ情報を入力します。

  • ETag は完全一致のみをサポートします。ETag は引用符で囲む必要があります。例: "5B3C1A2E0563E1B002CC607C6689"。複数の ETag を入力でき、1 行に 1 つの ETag を入力します。

  • オブジェクトのタグ をキーと値のペアとして指定します。オブジェクトタグのキーと値の両方で大文字と小文字が区別されます。タグルールの詳細については、「オブジェクトのタグ付け」をご参照ください。

結果の出力設定

出力結果をソートし、簡単な統計分析を実行できます。

  • オブジェクトの並べ替え方法: 最終更新日時、ファイル名、またはファイルサイズで、昇順、降順、またはデフォルトの順序でソートできます。クエリ結果を必要に応じてソートして、必要なファイルをすばやく見つけることができます。

  • データ集約: さまざまな出力タイプをサポートします。重複排除、グループカウント、最大値または最小値の検索、平均の計算、値の合計など、クエリ結果に対して計算を実行できます。これにより、効率的なデータ分析と管理が可能になります。

関連 API 操作

前述の操作は API 操作に基づいています。プログラムに高いカスタマイズ要件がある場合は、直接 REST API リクエストを行うことができます。REST API リクエストを行う場合は、署名を計算するためのコードを手動で記述する必要があります。

メタデータ管理機能の有効化の詳細については、「OpenMetaQuery」をご参照ください。

指定された条件を満たすファイルをクエリするには、「DoMetaQuery」をご参照ください。

メタデータ管理機能の無効化の詳細については、「CloseMetaQuery」をご参照ください。

課金

  • スカラー検索料金は、次の 2 つの部分で構成されます。

    • スカラー検索機能料金 (パブリックプレビュー期間中は無料)

      これには、オブジェクトのメタデータ管理料金が含まれます。この機能はパブリックプレビュー中であり、無料です。この機能は、パブリックプレビュー終了後の 2025 年 8 月 25 日から正式に課金されます。パブリックプレビュー後、OSS データインデックスの価格設定に基づいて課金されます。詳細については、「データインデックス料金」をご参照ください。

    • API リクエスト料金

      API リクエスト料金は、増分ファイルインデックスの更新中に生成されます。API 呼び出しの数に基づいて課金されます。関連する API リクエストは次のとおりです:

      動作

      API

      カウント

      バケット内のファイルのインデックスを構築する

      HeadObject および GetObject

      各ファイルに対して 1 回呼び出される

      バケット内のファイルにタグがある

      GetObjectTag

      タグを持つ各ファイルに対して 1 回呼び出される

      バケット内のファイルにカスタムメタデータがある

      GetObjectMeta

      カスタムメタデータを持つ各ファイルに対して 1 回呼び出される

      バケット内にシンボリックリンクファイルが存在する

      GetSymlink

      各シンボリックリンクファイルに対して 1 回呼び出される

      バケット内のファイルをスキャンする

      ListObjects

      スキャンされた 1,000 ファイルごとに 1 回呼び出される

      OSS API リクエスト料金の詳細については、「リクエスト料金」をご参照ください。

  • 課金を停止するには、スカラー検索を無効にする必要があります。

よくある質問

数億個のファイルを含むバケットのデータインデックスの構築に時間がかかるのはなぜですか?

インデックスは、1 秒あたり約 600 個の増分ファイルに対して構築できます。バケット内のファイルの数に基づいて、インデックスの構築に必要な時間を見積もることができます。

指定されたプレフィックスまたはディレクトリ内のファイルの合計サイズを照会するにはどうすればよいですか?

  1. OSS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、バケット をクリックします。[バケット] ページで、目的のバケットを見つけてクリックします。

  3. 左側のナビゲーションウィンドウで、オブジェクト管理 > データのインデックス作成 を選択します。

  4. [ファイル名] をプレフィックス一致に設定し、プレフィックスとして random_files/ を入力します。他のパラメーターはデフォルト設定のままにします。

    image

  5. [出力方法を設定] をクリックします。

    • [オブジェクトの並べ替え方法] で、[デフォルトのソート] を選択します。

    • [データ集約] で、[ファイルサイズ][合計] を選択します。

      image

  6. [今すぐクエリ] をクリックします。`random_files/` ディレクトリ内のファイルの総数と全ファイルの合計サイズを含む最終的な統計情報を表示できます。

    image

リファレンス

スカラー検索は、最終更新日時、ストレージクラス、アクセス制御リスト、ファイルサイズなど、複数のフィルター条件をサポートしています。OSS バケット内の多数のオブジェクトから特定の時間範囲内のオブジェクトをフィルタリングしたい場合は、「OSS で指定した時間範囲内のファイルをフィルタリングする方法」をご参照ください。