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

Object Storage Service:OSS データインデックスを使用した大規模データの集計

最終更新日:Jun 21, 2026

OSS データインデックスを使用すると、膨大な数のオブジェクトについて、オブジェクト数やサイズなどの統計情報を効率的に集計できます。従来の ListObjects 操作を使用する方法と比較して、データインデックスは効率を大幅に向上させ、プロセスを簡素化するため、大規模なデータ集計シナリオに最適です。

メリット

ある企業は、中国 (広州) リージョンの mybucket という名前のバケットに、ビジネスプレフィックスごとに 180 万のディレクトリに編成された 2 億個のオブジェクトを保存しています。OSS データインデックスを使用することで、オブジェクト集計に必要な時間が 83% 短縮されました。

従来の方法

OSS データインデックス

所要時間

毎日の集計に 2 時間かかります

毎日の集計に 20 分かかります

複雑さ

1,000 個を超えるオブジェクトを含むディレクトリの場合、ListObjects 操作を複数回呼び出す必要があります。

DoMetaQuery API をディレクトリごとに1 回呼び出すだけで済みます。

概要

image

このプロセスには、次の手順が含まれます。

  1. データインデックスの有効化:OSS は、オブジェクトメタデータ、カスタムメタデータ、オブジェクトタグを含むインデックステーブルを自動的に作成します。

  2. クエリと集計の開始:クエリ条件を設定してから、DoMetaQuery API を呼び出します。OSS は高速クエリを実行します。

最後に、OSS は一致するオブジェクトの統計情報 (合計数、合計サイズ、平均サイズなど) を返します。

クイックスタート

ステップ 1:データインデックスの有効化

OSS コンソール

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

  2. 左側のナビゲーションペインで、バケット をクリックします。「バケット」ページで、宛先バケットの名前をクリックします。

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

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

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

OSS SDK

Java、Python、Go 用の OSS SDK のみが、指定された条件を満たすオブジェクトをクエリする MetaSearch 機能をサポートしています。

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
public class Demo {
    // 実際のエンドポイントを使用してください。この例では、中国 (広州) リージョンのエンドポイントを使用しています。
    private static String endpoint = "https://oss-cn-guangzhou.aliyuncs.com";
    // バケット名を指定します。例:examplebucket。
    private static String bucketName = "examplebucket";
    public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
        // 環境変数からアクセス認証情報を取得します。コードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットが存在するリージョンを指定します。たとえば、バケットが中国 (広州) リージョンにある場合、リージョンを cn-guangzhou に設定します。
        String region = "cn-guangzhou";
        // 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 {
            // データインデックス機能を有効にします。
            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 インスタンスをシャットダウンします。
            ossClient.shutdown();
        }
    }
}
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。コードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが存在するリージョンのエンドポイントを指定します。たとえば、バケットが中国 (広州) リージョンにある場合、エンドポイントを https://oss-cn-guangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-guangzhou.aliyuncs.com"
# エンドポイントに対応するリージョンを指定します。例:cn-guangzhou。このパラメータは、署名バージョン 4 を使用する場合に必要です。
region = "cn-guangzhou"
# バケット名を指定します。例:examplebucket。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# データインデックス機能を有効にします。
bucket.open_bucket_meta_query()
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 クライアントを作成します。
	// バケットのデータインデックスを有効にするリクエストを構築します。
	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) // 結果を出力します。
}

ステップ 2:クエリと集計の開始

OSS コンソール

クエリ条件の設定

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

  2. [ストレージクラス][Standard] を選択します。[ACL][非公開] を選択します。

  3. オブジェクトプレフィックスにはあいまい一致を使用し、a/b を入力します。

出力結果の構成

  1. 最終更新日時で結果を降順に並べ替えます。

  2. フィルターされたオブジェクトサイズの合計平均を計算します。

  3. グループカウントストレージクラス 別に使用して、オブジェクト数をカウントします。

  1. 今すぐ検索 をクリックします。

OSS SDK

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;
public class Demo {
    // 中国 (広州) リージョンのエンドポイントが例として使用されています。実際のエンドポイントに置き換えてください。
    private static String endpoint = "https://oss-cn-guangzhou.aliyuncs.com";
    // バケット名を指定します。例:examplebucket。
    private static String bucketName = "examplebucket";
    public static void main(String[] args) throws Exception {
        // 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // バケットが存在するリージョンを指定します。たとえば、バケットが中国 (広州) リージョンにある場合、リージョンを cn-guangzhou に設定します。
        String region = "cn-guangzhou";
        // 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;
            // クエリ条件を設定します:ファイル名が "a/b" と一致し、ストレージクラスが "Standard" で、ACL が "private" です。
            // クエリは、"and" 演算子を使用してサブクエリを接続します。
            String query = "{\n" +
                    "  \"Operation\": \"and\",\n" +
                    "  \"SubQueries\": [\n" +
                    "    {\n" +
                    "      \"Field\": \"Filename\",\n" +
                    "      \"Value\": \"a/b\",\n" +
                    "      \"Operation\": \"match\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "      \"Field\": \"OSSStorageClass\",\n" +
                    "      \"Value\": \"Standard\",\n" +
                    "      \"Operation\": \"eq\"\n" +
                    "    },\n" +
                    "    {\n" +
                    "      \"Field\": \"ObjectACL\",\n" +
                    "      \"Value\": \"private\",\n" +
                    "      \"Operation\": \"eq\"\n" +
                    "    }\n" +
                    "  ]\n" +
                    "}";
            String sort = "FileModifiedTime";// 最終更新日時で並べ替えます。
            // オブジェクトサイズの合計、カウント、平均を計算する集計を作成します。
            Aggregation aggregationRequest1 = new Aggregation();
            aggregationRequest1.setField("Size");// サイズで集計します。
            aggregationRequest1.setOperation("sum");// 合計を計算します。
            Aggregation aggregationRequest2 = new Aggregation();
            aggregationRequest2.setField("Size");// サイズで集計します。
            aggregationRequest2.setOperation("count");// カウントを計算します。
            Aggregation aggregationRequest3 = new Aggregation();
            aggregationRequest3.setField("Size");// サイズで集計します。
            aggregationRequest3.setOperation("average");// 平均を計算します。
            // 集計リクエストをリストに追加します。
            Aggregations aggregations = new Aggregations();
            List<Aggregation> aggregationList = new ArrayList<>();
            aggregationList.add(aggregationRequest1);// 合計集計を追加します。
            aggregationList.add(aggregationRequest2);// カウント集計を追加します。
            aggregationList.add(aggregationRequest3);// 平均集計を追加します。
            aggregations.setAggregation(aggregationList);// リクエストの集計を設定します。
            // DoMetaQueryRequest を作成します。
            DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort);
            // 集計をリクエストに追加します。
            doMetaQueryRequest.setAggregations(aggregations);
            // 並べ替え順序を降順に設定します。
            doMetaQueryRequest.setOrder(SortOrder.DESC);
            // メタクエリを実行します。
            DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
            // クエリ結果を処理します。
            if (doMetaQueryResult.getFiles() != null) {
                // ファイルが返された場合、反復処理して情報を出力します。
                for (ObjectFile file : doMetaQueryResult.getFiles().getFile()) {
                    System.out.println("Filename: " + file.getFilename()); // ファイル名
                    System.out.println("ETag: " + file.getETag());// ETag
                    System.out.println("ObjectACL: " + file.getObjectACL()); // ACL
                    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) {
            // OSS 例外をキャッチします。
            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();
        }
    }
}
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import MetaQuery, AggregationsRequest  
import json
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが存在するリージョンのエンドポイントを指定します。たとえば、バケットが中国 (広州) リージョンにある場合、エンドポイントを https://oss-cn-guangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-guangzhou.aliyuncs.com"
# エンドポイントに対応するリージョンを指定します。例:cn-guangzhou。このパラメータは、署名バージョン 4 を使用する場合に必要です。
region = "cn-guangzhou"
# バケット名を指定します。例:examplebucket。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# クエリ条件:ファイル名が "a/b" と一致し、ストレージクラスが "Standard" で、ACL が "private" です。
query = {
    "Operation": "and",
    "SubQueries": [
        {"Field": "Filename", "Value": "a/b", "Operation": "match"},
        {"Field": "OSSStorageClass", "Value": "Standard", "Operation": "eq"},
        {"Field": "ObjectACL", "Value": "private", "Operation": "eq"}
    ]
}
# クエリを JSON 文字列に変換します。
query_json = json.dumps(query)
# オブジェクトサイズの合計、カウント、平均を計算する集計を作成します。
aggregations = [
    AggregationsRequest(field="Size", operation="sum"),  # オブジェクトサイズの合計を計算します。
    AggregationsRequest(field="Size", operation="count"),  # オブジェクト数を計算します。
    AggregationsRequest(field="Size", operation="average")  # オブジェクトサイズの平均を計算します。
]
# クエリ条件、最大結果数、ソートキーと順序、集計を指定して MetaQuery リクエストを作成します。
do_meta_query_request = MetaQuery(
    max_results=20,  # 最大 20 個のオブジェクトを返します。
    query=query_json,  # クエリ条件を設定します。
    sort="FileModifiedTime",  # 最終更新日時で並べ替えます。
    order="desc",  # 降順で並べ替えます。
    aggregations=aggregations  # 集計操作を設定します。
)
# メタクエリを実行します。
result = bucket.do_bucket_meta_query(do_meta_query_request)
# 一致するオブジェクトの情報を出力します。
if result.files:
    for file in result.files:
        print(f"Filename: {file.file_name}")  # ファイル名を出力します。
        print(f"ETag: {file.etag}")  # ETag を出力します。
        print(f"ObjectACL: {file.object_acl}")  # ACL を出力します。
        print(f"OssObjectType: {file.oss_object_type}")  # OSS オブジェクトタイプを出力します。
        print(f"OssStorageClass: {file.oss_storage_class}")  # ストレージクラスを出力します。
        print(f"TaggingCount: {file.oss_tagging_count}")  # タグ数を出力します。
        # オブジェクトのすべてのタグを出力します。
        if file.oss_tagging:
            for tag in file.oss_tagging:
                print(f"Key: {tag.key}")  # タグキーを出力します。
                print(f"Value: {tag.value}")  # タグ値を出力します。
        # オブジェクトのユーザーメタデータを出力します。
        if file.oss_user_meta:
            for meta in file.oss_user_meta:
                print(f"Key: {meta.key}")  # ユーザーメタデータキーを出力します。
                print(f"Value: {meta.value}")  # ユーザーメタデータ値を出力します。
# 集計結果を出力します。
if result.aggregations:
    for aggre in result.aggregations:
        print(f"Field: {aggre.field}")  # 集計フィールドを出力します。
        print(f"Operation: {aggre.operation}")  # 集計操作タイプ (合計、カウント、平均など) を出力します。
        print(f"Value: {aggre.value}")  # 集計結果値を出力します。
package main
import (
	"context"
	"encoding/json"
	"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 クライアントを作成します。
	// クエリ条件を構築します:ファイル名が "a/b" と一致し、ストレージクラスが "Standard" で、ACL が "private" です。
	query := map[string]interface{}{
		"Operation": "and",
		"SubQueries": []map[string]interface{}{
			{"Field": "Filename", "Value": "a/b", "Operation": "match"},
			{"Field": "OSSStorageClass", "Value": "Standard", "Operation": "eq"},
			{"Field": "ObjectACL", "Value": "private", "Operation": "eq"},
		},
	}
	// クエリを JSON 文字列にマーシャリングします。
	queryJSON, err := json.Marshal(query)
	if err != nil {
		log.Fatalf("failed to marshal query %v", err)
	}
	// オブジェクトサイズの合計、カウント、平均を計算する集計を作成します。
	aggregations := []oss.MetaQueryAggregation{
		{Field: oss.Ptr("Size"), Operation: oss.Ptr("sum")},     // 合計を計算します。
		{Field: oss.Ptr("Size"), Operation: oss.Ptr("count")},   // カウントを計算します。
		{Field: oss.Ptr("Size"), Operation: oss.Ptr("average")}, // 平均を計算します。
	}
	// DoMetaQuery リクエストを構築します。
	request := &oss.DoMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // クエリするバケットを指定します。
		MetaQuery: &oss.MetaQuery{
			MaxResults: oss.Ptr(int64(20)),         // 返される最大結果数:20。
			Query:      oss.Ptr(string(queryJSON)), // クエリ条件を設定します。
			Sort:       oss.Ptr("FileModifiedTime"),            // 最終更新日時で並べ替えます。
			Order:      oss.Ptr(oss.MetaQueryOrderDesc),      // 降順で並べ替えます。
			Aggregations: &oss.MetaQueryAggregations{
				Aggregations: aggregations}, // 集計操作を設定します。
		},
	}
	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)
		}
	}
	// 集計結果を出力します。
	for _, aggregation := range result.Aggregations {
		fmt.Printf("Aggregation Field:%s\n", *aggregation.Field)
		fmt.Printf("Aggregation Operation:%s\n", *aggregation.Operation)
		fmt.Printf("Aggregation Value:%f\n", *aggregation.Value)
	}
}

ステップ 3:結果の確認

OSS コンソール

一致する 100 個の Standard オブジェクトの合計サイズは 19.53 MB で、各オブジェクトの平均サイズは約 200 KB です。

クエリ結果ページには、[オブジェクトデータ集計結果][ファイルリスト] の 2 つのセクションがあります。集計結果セクションには、オブジェクトサイズの合計と平均が表示されます。ファイルリストセクションには、各オブジェクトの詳細情報 (名前 (例:a/b/report9.txt)、サイズ、オブジェクトタイプ、ストレージクラス、ACL (非公開)、最終更新日時など) が表示されます。

OSS SDK

一致する 100 個の Standard オブジェクトの合計サイズは 19.53 MB で、各オブジェクトの平均サイズは約 200 KB です。

Field: Size
Operation: sum
Value: 2.048E7
Field: Size
Operation: count
Value: 100.0
Field: Size
Operation: average
Value: 204800.0

関連ドキュメント

  • 高度なカスタマイズを行うには、REST API リクエストを直接行うことができます。この場合、リクエスト署名を手動で計算する必要があります。詳細については、「署名バージョン 4」および「DoMetaQuery」をご参照ください。