All Products
Search
Document Center

Object Storage Service:Kueri file di OSS berdasarkan metadata

Last Updated:May 10, 2026

MetaSearch adalah fitur Object Storage Service (OSS) yang mengindeks metadata objek. Anda dapat menentukan kondisi kustom untuk memfilter dan mengambil daftar objek secara cepat. Fitur ini meningkatkan pemahaman terhadap struktur data serta menyederhanakan kueri, analisis, dan manajemen objek selanjutnya.

Kasus penggunaan

Audit data

MetaSearch memungkinkan Anda menemukan file dengan cepat guna memenuhi persyaratan audit data atau regulasi. Misalnya, di industri jasa keuangan, Anda dapat memfilter file berdasarkan metadata seperti tag kustom dan izin akses untuk menemukan file dengan tingkat sensitivitas atau izin tertentu, sehingga meningkatkan efisiensi audit data.

Cadangan dan arsip data perusahaan

Saat melakukan pencadangan dan pengarsipan data perusahaan, gunakan MetaSearch untuk mengambil file berdasarkan tanggal atau jenis secara cepat. Anda dapat memfilter berdasarkan metadata seperti waktu pembuatan, kelas penyimpanan, atau tag kustom guna menemukan data historis atau catatan yang diarsipkan dengan cepat.

Batasan

  • Batas wilayah

    MetaSearch tersedia untuk bucket di wilayah Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Ulanqab), Tiongkok (Hong Kong), Singapura, Indonesia (Jakarta), Jerman (Frankfurt), AS (Virginia), AS (Silicon Valley), dan Inggris (London).

  • Batas bucket

    Bucket yang diaktifkan MetaSearch dapat berisi maksimal 50 miliar objek. Jika jumlah objek dalam bucket melebihi 50 miliar, performa pengambilan mungkin menurun. Untuk memproses data berskala lebih besar, hubungi Technical Support untuk evaluasi.

  • Unggah multi-bagian

    Untuk objek yang dibuat menggunakan unggah multi-bagian, hasil kueri hanya menampilkan objek lengkap yang dirakit dari bagian-bagian menggunakan operasi CompleteMultipartUpload, bukan bagian-bagian dari unggahan yang dimulai tetapi tidak diselesaikan (Complete) atau dibatalkan (Abort).

Performa

Metrik performa berikut untuk mode MetaSearch OSS hanya sebagai referensi.

  • Waktu pembuatan indeks file yang sudah ada

    • 100 juta file dalam satu bucket: 4 jam

    • 1 miliar file dalam satu bucket: sekitar 10 jam

    • 10 miliar file dalam satu bucket: sekitar 1 hingga 3 hari

    • 20 miliar file dalam satu bucket: sekitar 2 hingga 4 hari

    • 30 miliar file dalam satu bucket: sekitar 3 hingga 6 hari

    • 50 miliar file dalam satu bucket: sekitar 6 hingga 10 hari

    • Jika bucket Anda berisi lebih dari 1 miliar file dengan tag, pembuatan indeks akan memakan waktu lebih lama daripada perkiraan di atas.

  • Waktu pembaruan indeks file inkremental

    Secara default, OSS mengalokasikan tambahan 5.000 QPS ke mode MetaSearch untuk memproses pembaruan indeks file. QPS ini tidak memengaruhi QoS bucket Anda. Ketika QPS untuk penambahan, modifikasi, atau penghapusan file dalam bucket berada di bawah batas 5.000 QPS, file yang baru diunggah atau dimodifikasi biasanya dapat dicari dalam beberapa menit. Jika laju melebihi 5.000 QPS, hubungi Technical Support. Kami akan mengevaluasi situasi Anda dan memberikan bantuan.

  • Performa pengambilan file

    Pengambilan selesai dalam hitungan detik. Periode timeout default adalah 30 detik.

Aktifkan MetaSearch

Konsol OSS

Untuk bucket di wilayah Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Hong Kong), Singapura, Indonesia (Jakarta), atau Jerman (Frankfurt)

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Data Indexing.

  4. Pada halaman Data Indexing, jika Anda menggunakan fitur pengindeksan data untuk pertama kali, ikuti petunjuk di layar untuk memberikan izin kepada role AliyunMetaQueryDefaultRole. Hal ini memungkinkan OSS mengelola data dalam bucket. Setelah memberikan izin, klik Enable Data Indexing.

  5. Pilih MetaSearch lalu klik Enable.

    Catatan

    Mengaktifkan MetaSearch memerlukan waktu. Durasi pastinya tergantung pada jumlah objek dalam bucket.

Untuk bucket di wilayah Inggris (London), Tiongkok (Ulanqab), AS (Virginia), atau AS (Silicon Valley)

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Data Indexing. Jika Anda menggunakan fitur pengindeksan data untuk pertama kali, ikuti petunjuk di layar untuk memberikan izin kepada role AliyunMetaQueryDefaultRole. Hal ini memungkinkan OSS mengelola data dalam bucket.

  4. Aktifkan Metadata Management.

    Catatan

    Mengaktifkan Metadata Management memerlukan waktu. Durasi pastinya tergantung pada jumlah objek dalam bucket.

Alibaba Cloud SDK

Sebelum menggunakan MetaSearch, Anda harus mengaktifkan fitur MetaSearch untuk bucket yang ditentukan. Kode berikut memberikan contohnya.

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 {
        // Dalam contoh ini, digunakan endpoint wilayah Tiongkok (Hangzhou).
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Dapatkan kredensial akses dari variabel lingkungan. 
        // Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat instance OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Aktifkan fitur 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 {
            // Matikan instance OSSClient.
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah dan jelaskan tujuan skrip.
parser = argparse.ArgumentParser(description="open meta query sample")
# Tentukan parameter --region untuk menunjukkan wilayah tempat bucket berada. Parameter ini wajib.
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# Tentukan parameter --bucket untuk menunjukkan bucket. Parameter ini wajib.
parser.add_argument('--bucket', help='The name of the bucket.', required=True)
# Tentukan parameter --endpoint untuk menunjukkan titik akhir untuk mengakses OSS. Parameter ini wajib.
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')

def main():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Dari variabel lingkungan, muat informasi autentikasi yang diperlukan untuk mengakses OSS.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    # Tentukan penyedia kredensial.
    cfg.credentials_provider = credentials_provider
    # Atur wilayah ke wilayah yang disediakan dari baris perintah.
    cfg.region = args.region
    # Jika titik akhir kustom disediakan, perbarui atribut endpoint objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Buat klien OSS.
    client = oss.Client(cfg)

    # Mulai permintaan untuk mengaktifkan kueri berbasis metadata.
    result = client.open_meta_query(oss.OpenMetaQueryRequest(
            bucket=args.bucket,
    ))

    # Tampilkan kode status HTTP dan ID permintaan.
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          )

# Panggil fungsi main ketika skrip dijalankan secara langsung.
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 // Tentukan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
	bucketName string // Tentukan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)

// Fungsi init dieksekusi sebelum fungsi main untuk menginisialisasi program.
func init() {
	// Gunakan parameter baris perintah untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika tidak, program menampilkan parameter default dan dihentikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Catat pesan kesalahan dan hentikan program.
	}

	// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, tampilkan parameter default dan keluar dari program.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Catat pesan kesalahan dan hentikan program.
	}

	// Buat dan konfigurasi klien serta gunakan variabel lingkungan untuk meneruskan penyedia kredensial.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.

	// Buat permintaan OpenMetaQuery untuk mengaktifkan fitur manajemen metadata untuk bucket tertentu.
	request := &oss.OpenMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
	}
	result, err := client.OpenMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk mengaktifkan fitur manajemen metadata untuk bucket.
	if err != nil {
		log.Fatalf("failed to open meta query %v", err) // Jika terjadi kesalahan, catat pesan kesalahan dan hentikan program.
	}

	log.Printf("open meta query result:%#v\n", result) // Tampilkan hasilnya.
}

PHP

<?php

// Impor file autoloader untuk memastikan pustaka dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];

// Konversi deskripsi argumen ke format opsi panjang yang dibutuhkan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen wajib ditentukan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan argumen.
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // Jika argumen wajib tidak ditentukan, keluar dari program.
    }
}

// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek OpenMetaQueryRequest untuk mengaktifkan fitur pengambilan skalar untuk bucket.
$request = new Oss\Models\OpenMetaQueryRequest(
    bucket: $bucket
);

// Eksekusi operasi untuk mengaktifkan fitur pengambilan skalar.
$result = $client->openMetaQuery($request);

// Cetak hasil pengaktifan fitur pengambilan skalar.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan permintaan berhasil.
    'request id:' . $result->requestId . PHP_EOL     // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);

Ossutil

Contoh berikut menunjukkan cara mengaktifkan fitur MetaSearch untuk bucket bernama examplebucket.

ossutil api open-meta-query --bucket examplebucket

Untuk informasi lebih lanjut tentang perintah ini, lihat open-meta-query.

Jalankan kueri MetaSearch

Konsol OSS

Contoh ini menemukan semua objek yang ukurannya kurang dari 500 KB dan terakhir dimodifikasi antara pukul 00.00 tanggal 11 September 2024 hingga pukul 00.00 tanggal 12 September 2024. Hasilnya diurutkan berdasarkan Ukuran Objek secara ascending, dan kueri mengembalikan Ukuran Objek maksimum sebagai agregasi.

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Data Indexing.

  4. Konfigurasikan parameter berikut dan biarkan parameter lainnya pada pengaturan default.

    • Atur Last Modified At ke rentang dari pukul 00.00 tanggal 11 September 2024 hingga pukul 00.00 tanggal 12 September 2024.

    • Atur Object Size ke kurang dari 500 KB.

  5. Perluas More filter conditions.

    • Untuk Object Sort Order, pilih Object Size dan Ascending.

    • Untuk Data Aggregation, pilih Maximum untuk Object Size.

    image

  6. Klik Query. Dua objek sesuai dengan kondisi kueri. Objek terbesar berukuran 434 KB.

    image

    Untuk informasi lebih lanjut tentang semua kondisi kueri dan pengaturan output, lihat Query conditions and output settings.

Alibaba Cloud SDK

Contoh kode berikut menggunakan fitur MetaSearch untuk menanyakan objek yang memenuhi kondisi tertentu.

Java

Untuk contoh kode lainnya, lihat MetaSearch (Java SDK V1).

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 {
        // Dalam contoh ini, digunakan endpoint wilayah Tiongkok (Hangzhou).
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Dapatkan kredensial akses dari variabel lingkungan. 
        // Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat instance OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Tanyakan objek yang memenuhi kondisi tertentu dan kembalikan objek berdasarkan bidang tertentu dan dalam urutan pengurutan yang ditentukan.
            int maxResults = 20;
            // Tanyakan objek yang ukurannya kurang dari 1.048.576 byte, kembalikan maksimal 20 objek sekaligus, dan urutkan objek secara ascending.
            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>();
            // Tentukan nama bidang yang digunakan dalam operasi agregasi.
            aggregationRequest.setField("Size");
            // Tentukan operator yang digunakan dalam operasi agregasi. max menunjukkan nilai maksimum.
            aggregationRequest.setOperation("max");
            aggregationList.add(aggregationRequest);
            aggregations.setAggregation(aggregationList);

            // Tentukan operasi agregasi.
            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());
                    // Tanyakan nilai ETag yang digunakan untuk mengidentifikasi konten objek.
                    System.out.println("ETag: " + file.getETag());
                    // Tanyakan daftar kontrol akses (ACL) objek.
                    System.out.println("ObjectACL: " + file.getObjectACL());
                    // Tanyakan jenis objek.
                    System.out.println("OssObjectType: " + file.getOssObjectType());
                    // Tanyakan kelas penyimpanan objek.
                    System.out.println("OssStorageClass: " + file.getOssStorageClass());
                    // Tanyakan jumlah tag objek.
                    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()){
                    // Tanyakan bidang tempat agregasi dilakukan.
                    System.out.println("Field: " + aggre.getField());
                    // Tanyakan operator agregasi.
                    System.out.println("Operation: " + aggre.getOperation());
                    // Tanyakan hasil operasi agregasi.
                    System.out.println("Value: " + aggre.getValue());
                    if(aggre.getGroups() != null && aggre.getGroups().getGroup().size() > 0){
                        // Tanyakan nilai agregasi.
                        System.out.println("Groups value: " + aggre.getGroups().getGroup().get(0).getValue());
                        // Tanyakan jumlah total agregasi.
                        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 {
            // Matikan instance OSSClient.
            ossClient.shutdown();
        }
    }
}

Python

Untuk contoh kode lainnya, lihat MetaSearch.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah untuk mengurai argumen dari baris perintah.
parser = argparse.ArgumentParser(description="do meta query sample")
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Urai argumen baris perintah.
    args = parser.parse_args()

    # Peroleh kredensial akses dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    # Tentukan penyedia kredensial.
    cfg.credentials_provider = credentials_provider
    # Atur wilayah ke wilayah yang diberikan dari baris perintah.
    cfg.region = args.region
    # Jika titik akhir kustom disediakan, perbarui atribut endpoint objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Buat klien OSS.
    client = oss.Client(cfg)

    # Lakukan kueri berbasis metadata.
    result = client.do_meta_query(oss.DoMetaQueryRequest(
            bucket=args.bucket,  # Bucket yang menyimpan objek yang akan dikueri.
            meta_query=oss.MetaQuery(  # Tentukan pengaturan kueri.
                aggregations=oss.MetaQueryAggregations(  # Tentukan agregasi.
                    aggregations=[  # Daftar agregasi.
                        oss.MetaQueryAggregation(  # Agregasi pertama: ukuran total objek.
                            field='Size',
                            operation='sum',
                        ),
                        oss.MetaQueryAggregation(  # Agregasi kedua: ukuran objek maksimum.
                            field='Size',
                            operation='max',
                        )
                    ],
                ),
                next_token='',  # Token paginasi.
                max_results=80369,  # Jumlah maksimum entri yang dapat dikembalikan.
                query='{"Field": "Size","Value": "1048576","Operation": "gt"}',  # Kondisi kueri.
                sort='Size',  # Bidang pengurutan.
                order=oss.MetaQueryOrderType.DESC,  # Urutan pengurutan.
            ),
    ))

    # Tampilkan informasi tanggapan dasar.
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          # Anda dapat menghapus komentar pada satu atau beberapa baris berikut untuk menampilkan detail lebih lanjut.
          # 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},'
    )

    # Jika objek yang cocok ditemukan, tampilkan tag dan metadata pengguna.
    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}')
    # Tampilkan semua agregasi.
    if result.aggregations.aggregations:
        for r in result.aggregations.aggregations:
            print(f'result: field: {r.field}, operation: {r.operation}')

if __name__ == "__main__":
    main()

Go

Untuk contoh kode lainnya, lihat MetaSearch (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 // Tentukan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
	bucketName string // Tentukan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)

// Fungsi init dieksekusi sebelum fungsi main untuk menginisialisasi program.
func init() {
	// Gunakan parameter baris perintah untuk menentukan wilayah. Secara default, parameter ini adalah string kosong.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket. Secara default, parameter ini adalah string kosong.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}

func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika tidak, program menampilkan parameter default dan dihentikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required")
	}

	// Periksa apakah wilayah ditentukan. Jika tidak, program menampilkan parameter default dan dihentikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// Buat dan konfigurasi klien serta gunakan variabel lingkungan untuk meneruskan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.

	// Buat permintaan DoMetaQuery untuk menanyakan objek yang memenuhi kondisi tertentu.
	request := &oss.DoMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
		MetaQuery: &oss.MetaQuery{
			Query: oss.Ptr(`{"Field": "Size","Value": "1048576","Operation": "gt"}`), // Tanyakan objek yang ukurannya lebih besar dari 1 MB.
			Sort:  oss.Ptr("Size"),                                                  // Daftar objek berdasarkan ukuran.
			Order: oss.Ptr(oss.MetaQueryOrderAsc),                                  // Urutkan objek secara ascending.
		},
	}
	result, err := client.DoMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk menanyakan objek yang memenuhi kondisi di atas.
	if err != nil {
		log.Fatalf("failed to do meta query %v", err)
	}

	// Tampilkan token yang digunakan untuk menanyakan data di halaman berikutnya.
	fmt.Printf("NextToken:%s\n", *result.NextToken)

	// Telusuri hasil yang dikembalikan dan tampilkan detail setiap objek.
	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)
		}

		// Tampilkan tag objek.
		for _, tagging := range file.OSSTagging {
			fmt.Printf("Oss Tagging Key:%s\n", *tagging.Key)
			fmt.Printf("Oss Tagging Value:%s\n", *tagging.Value)
		}

		// Tampilkan metadata pengguna.
		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

Untuk contoh kode lainnya, lihat MetaSearch (PHP SDK V2).

<?php

// Impor file autoloader untuk memastikan pustaka dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];

// Konversi deskripsi argumen ke format opsi panjang yang dibutuhkan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen wajib ditentukan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan argumen.
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // Jika argumen wajib tidak ditentukan, keluar dari program.
    }
}

// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek DoMetaQueryRequest untuk melakukan operasi kueri metadata.
$request = new \AlibabaCloud\Oss\V2\Models\DoMetaQueryRequest(
    bucket: $bucket,
    metaQuery: new \AlibabaCloud\Oss\V2\Models\MetaQuery(
        maxResults: 5, // Jumlah maksimum hasil yang dikembalikan.
        query: "{'Field': 'Size','Value': '1048576','Operation': 'gt'}", // Kondisi kueri: objek yang ukurannya lebih besar dari 1 MB.
        sort: 'Size', // Urutkan berdasarkan ukuran objek.
        order: \AlibabaCloud\Oss\V2\Models\MetaQueryOrderType::ASC, // Urutkan secara ascending.
        aggregations: new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregations( // Operasi agregasi
            aggregations: [
                new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
                    field: 'Size', // Bidang ukuran objek.
                    operation: 'sum' // Operasi agregasi: jumlah.
                ),
                new \AlibabaCloud\Oss\V2\Models\MetaQueryAggregation(
                    field: 'Size', // Bidang ukuran objek.
                    operation: 'max' // Operasi agregasi: nilai maksimum.
                ),
            ]
        )
    )
);

// Lakukan operasi kueri metadata.
$result = $client->doMetaQuery($request);

// Cetak hasil kueri metadata.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan permintaan berhasil.
    'request id:' . $result->requestId . PHP_EOL .   // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
    'result:' . var_export($result, true) . PHP_EOL  // Hasil kueri, yang berisi objek yang cocok dan data agregasinya.
);

Gunakan ossutil

Anda dapat menggunakan tool baris perintah ossutil untuk menanyakan objek yang memenuhi kondisi tertentu dengan menggunakan fitur MetaSearch. Untuk informasi tentang cara menginstal ossutil, lihat Install ossutil.

Contoh berikut menunjukkan cara menanyakan objek yang memenuhi kondisi tertentu di bucket 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\"}]}}"

Untuk informasi lebih lanjut tentang perintah ini, lihat do-meta-query.

Nonaktifkan MetaSearch

  • Menonaktifkan fitur ini tidak memengaruhi data yang sudah disimpan di OSS. Jika Anda mengaktifkan kembali fitur ini, sistem akan memindai ulang file yang ada dan membangun kembali indeks. Waktu yang dibutuhkan tergantung pada jumlah file dalam bucket Anda.

  • Penagihan berhenti satu jam setelah Anda menonaktifkan fitur ini. Pembuatan tagihan mungkin tertunda, jadi pantau tagihan Anda untuk memastikan keakuratannya.

Konsol OSS

Masuk ke Konsol OSS. Pada halaman Data Indexing, klik Disable di samping Metadata Management dan ikuti petunjuknya.

image

Alibaba Cloud SDK

Java

Untuk contoh kode lainnya, lihat MetaSearch (OSS SDK for Java V1).

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 {
        // Dalam contoh ini, digunakan endpoint wilayah Tiongkok (Hangzhou).
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Dapatkan kredensial akses dari variabel lingkungan. 
        // Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat instance OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Nonaktifkan fitur MetaSearch untuk bucket.
            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 {
            // Matikan instance OSSClient.
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Python

Untuk contoh kode lainnya, lihat MetaSearch.

import argparse
import alibabacloud_oss_v2 as oss

// Buat objek ArgumentParser untuk memproses argumen baris perintah.
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():
    // Parsing argumen baris perintah.
    args = parser.parse_args()

    // Dapatkan kredensial akses dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    // Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    // Atur penyedia kredensial ke penyedia kredensial yang diperoleh dari variabel lingkungan.
    cfg.credentials_provider = credentials_provider
    // Atur wilayah dalam konfigurasi ke wilayah yang ditentukan dalam baris perintah.
    cfg.region = args.region
    // Jika titik akhir kustom disediakan, perbarui atribut endpoint objek cfg dengan titik akhir yang disediakan.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    // Buat klien OSS.
    client = oss.Client(cfg)

    // Panggil metode close_meta_query untuk menonaktifkan fitur kueri metadata untuk bucket yang ditentukan.
    result = client.close_meta_query(oss.CloseMetaQueryRequest(
            bucket=args.bucket,
    ))

    // Tampilkan kode status HTTP dan ID permintaan.
    print(f'status code: {result.status_code}, request id: {result.request_id}')

// Panggil fungsi main ketika skrip dijalankan secara langsung.
if __name__ == "__main__":
    main()

Go

Untuk contoh kode lainnya, lihat MetaSearch (OSS SDK for Go 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 // Tentukan variabel untuk menyimpan informasi wilayah yang diperoleh dari baris perintah.
	bucketName string // Tentukan variabel untuk menyimpan nama bucket yang diperoleh dari baris perintah.
)

// Fungsi init dieksekusi sebelum fungsi main untuk menginisialisasi program.
func init() {
	// Gunakan parameter baris perintah untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "The region in which the bucket is located.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
}


func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika tidak, program menampilkan parameter default dan dihentikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, bucket name required") // Catat pesan kesalahan dan hentikan program.
	}

	// Periksa apakah wilayah ditentukan. Jika tidak, program menampilkan parameter default dan dihentikan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required") // Catat pesan kesalahan dan hentikan program.
	}

	// Buat dan konfigurasi klien serta gunakan variabel lingkungan untuk meneruskan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat instance OSSClient baru.

	// Buat permintaan CloseMetaQuery untuk menonaktifkan fitur manajemen metadata untuk bucket.
	request := &oss.CloseMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
	}
	result, err := client.CloseMetaQuery(context.TODO(), request) // Eksekusi permintaan.
	if err != nil {
		log.Fatalf("failed to close meta query %v", err) // Jika terjadi kesalahan, catat pesan kesalahan dan keluar dari program.
	}

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

PHP

Untuk contoh kode lainnya, lihat MetaSearch (OSS SDK for PHP V2).

<?php

// Impor file autoloader untuk memastikan pustaka dependensi dapat dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan deskripsi argumen baris perintah.
$optsdesc = [
    "region" => ['help' => 'The region in which the bucket is located.', 'required' => True], // Wilayah tempat bucket berada. Parameter ini wajib.
    "endpoint" => ['help' => 'The domain names that other services can use to access OSS.', 'required' => False], // Titik akhir yang dapat digunakan layanan lain untuk mengakses OSS. Parameter ini opsional.
    "bucket" => ['help' => 'The name of the bucket', 'required' => True], // Nama bucket. Parameter ini wajib.
];

// Konversi deskripsi argumen ke format opsi panjang yang dibutuhkan oleh getopt.
// Tanda titik dua (:) setelah setiap argumen menunjukkan bahwa argumen tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing argumen baris perintah.
$options = getopt("", $longopts);

// Periksa apakah argumen wajib ditentukan.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Dapatkan informasi bantuan argumen.
        echo "Error: the following arguments are required: --$key, $help" . PHP_EOL;
        exit(1); // Jika argumen wajib tidak ditentukan, keluar dari program.
    }
}

// Ekstrak nilai dari argumen yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Atur penyedia kredensial.
$cfg->setRegion($region); // Atur wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, atur titik akhir.
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek CloseMetaQueryRequest untuk menonaktifkan fitur pengambilan untuk bucket.
$request = new \AlibabaCloud\Oss\V2\Models\CloseMetaQueryRequest(
    bucket: $bucket
);

// Eksekusi operasi untuk menonaktifkan fitur pengambilan.
$result = $client->closeMetaQuery($request);

// Cetak hasil menonaktifkan fitur pengambilan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan permintaan berhasil.
    'request id:' . $result->requestId . PHP_EOL     // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);

ossutil

Contoh berikut menunjukkan cara menonaktifkan fitur MetaSearch untuk bucket examplebucket:

ossutil api close-meta-query --bucket examplebucket

Untuk informasi lebih lanjut tentang perintah ini, lihat close-meta-query.

Kondisi kueri dan pengaturan output

Kondisi kueri

Anda dapat menggunakan kondisi kueri berikut secara individual atau dalam kombinasi.

Kondisi kueri metadata OSS

Kondisi kueri

Deskripsi

Storage Class

Secara default, semua kelas penyimpanan OSS dipilih: Standard, Infrequent Access (IA), Archive, Cold Archive, dan Deep Cold Archive. Pilih kelas penyimpanan yang diinginkan untuk memfilter hasil kueri.

ACL (Access Control List)

Secara default, keempat daftar kontrol akses (ACL) yang didukung oleh OSS dipilih: Inherit from Bucket, Private, Public Read, dan Public Read/Write. Pilih ACL yang diinginkan untuk memfilter hasil kueri.

File Name

Mendukung Fuzzy Match dan Equal To. Untuk menemukan objek tertentu, seperti exampleobject.txt, Anda dapat mencocokkannya dengan salah satu cara berikut:

  • Pilih Equal To dan masukkan nama objek lengkap exampleobject.txt.

  • Pilih Fuzzy Match dan masukkan substring, seperti example atau .txt.

    Penting

    Pencocokan kabur dapat menemukan urutan karakter yang cocok dalam nama objek. Misalnya, jika Anda memasukkan test, kueri akan mengembalikan objek seperti localfolder/test/.example.jpg dan localfolder/test.jpg.

Upload Type

Secara default, keempat jenis objek yang didukung oleh OSS dipilih. Pilih jenis objek yang diinginkan untuk memfilter hasil kueri. Jenis yang tersedia adalah:

  • Normal: Objek yang dibuat menggunakan unggah sederhana.

  • Multipart: Objek yang dibuat menggunakan unggah multi-bagian.

  • Appendable: Objek yang dibuat menggunakan unggah append.

  • Symlink: Tautan simbolik yang dibuat untuk akses cepat ke objek.

Last Modified At

Tentukan Start Date dan End Date untuk waktu modifikasi terakhir objek. Waktu akurat hingga detik.

Object Size

Mendukung lima kondisi filter: Equal To, Greater Than, Greater Than or Equal To, Less Than, dan Less Than or Equal To. Ukuran objek diukur dalam KB.

Object Versions

Anda hanya dapat menanyakan versi saat ini dari objek.

Kondisi kueri ETag dan tag objek

Anda dapat memfilter objek berdasarkan ETag dan tag objeknya.

  • Filter ETag melakukan pencocokan eksak. Sertakan ETag dalam tanda kutip, seperti "5B3C1A2E0563E1B002CC607C6689". Untuk memasukkan beberapa ETag, letakkan masing-masing di baris baru.

  • Tentukan Object Tags sebagai pasangan kunci-nilai. Kunci dan nilai tag objek bersifat case-sensitive. Untuk informasi lebih lanjut tentang aturan penandaan, lihat Object tags.

Pengaturan output

Anda dapat mengurutkan hasil dan melakukan analisis statistik sederhana.

  • Object Sort Order: Anda dapat mengurutkan berdasarkan waktu modifikasi terakhir, nama objek, atau ukuran objek secara ascending, descending, atau urutan default.

  • Data Aggregation: Anda dapat melakukan perhitungan pada hasil kueri, seperti menghitung item unik, mengelompokkan dan menghitung, menemukan nilai maksimum atau minimum, menghitung rata-rata, dan menjumlahkan nilai.

API terkait

Operasi di atas dibangun di atas API dasar. Untuk kustomisasi lebih lanjut, Anda dapat membuat permintaan REST API langsung, tetapi Anda harus menulis kode secara manual untuk menghitung signature.

Untuk mengaktifkan fitur manajemen metadata, lihat OpenMetaQuery.

Untuk menanyakan file yang memenuhi kondisi tertentu, lihat DoMetaQuery.

Untuk menonaktifkan fitur manajemen metadata, lihat CloseMetaQuery.

Penagihan

  • Harga MetaSearch terdiri dari dua komponen berikut:

    • Biaya fitur MetaSearch

      Ini adalah biaya manajemen untuk metadata objek, ditagih dengan tarif standar untuk pengindeksan data OSS. Untuk informasi lebih lanjut, lihat Data indexing fees.

    • Biaya permintaan API

      Biaya permintaan API dikenakan selama pembaruan indeks file inkremental. Anda dikenai biaya berdasarkan jumlah panggilan API. Tabel berikut mencantumkan permintaan API yang dikenai biaya ini:

      Tindakan

      API

      Jumlah

      Mengindeks objek dalam bucket

      HeadObject dan GetObject

      Dipanggil sekali per objek

      Mengindeks objek yang memiliki tag

      GetObjectTag

      Dipanggil sekali per objek dengan tag

      Mengindeks objek yang memiliki metadata kustom

      GetObjectMeta

      Dipanggil sekali per objek dengan metadata kustom

      Mengindeks tautan simbolik

      GetSymlink

      Dipanggil sekali per tautan simbolik

      Memindai objek dalam bucket

      ListObjects

      Dipanggil sekali setiap 1.000 objek yang dipindai

      Untuk informasi lebih lanjut tentang biaya permintaan API OSS, lihat Request fees.

  • Untuk menghentikan biaya ini, nonaktifkan MetaSearch.

FAQ

Pembuatan indeks data lambat untuk bucket besar

Laju pengindeksan sekitar 600 objek inkremental per detik. Anda dapat memperkirakan total waktu yang dibutuhkan berdasarkan jumlah objek dalam bucket Anda.

Kueri ukuran total objek berdasarkan awalan

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Pada halaman yang muncul, klik nama bucket target.

  3. Di panel navigasi kiri, pilih Object Management > Data Indexing.

  4. Atur Object Name ke Prefix Match, dan masukkan awalan: random_files/. Biarkan parameter lainnya pada pengaturan default.

    image

  5. Konfigurasikan Search Result Settings.

    • Untuk Object Sort Order, pilih Default.

    • Untuk Data Aggregation, pilih Sum dari Object Size.

      image

  6. Klik Query Now. Hasilnya menunjukkan ukuran total semua objek dengan awalan random_files/.

    image

Dokumentasi terkait

MetaSearch mendukung berbagai kondisi filter, seperti waktu modifikasi terakhir, kelas penyimpanan, daftar kontrol akses, dan ukuran file. Untuk memfilter objek dalam bucket OSS dalam rentang waktu tertentu, lihat How to filter files in OSS within a specified time range.