全部产品
Search
文档中心

Object Storage Service:Pencarian skalar (Python SDK V2)

更新时间:Nov 09, 2025

Pencarian skalar adalah fitur pengindeksan yang disediakan oleh OSS berdasarkan metadata objek. Fitur ini memungkinkan Anda menentukan kondisi kustom untuk menyaring dan mengambil daftar objek dengan cepat, membantu Anda mengelola serta memahami struktur data lebih baik, serta memfasilitasi kueri, analisis statistik, dan manajemen objek selanjutnya.

Catatan penggunaan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk Wilayah Hangzhou, Tiongkok sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.

Kode contoh

Aktifkan fitur manajemen metadata

Kode contoh berikut menunjukkan cara mengaktifkan fitur manajemen metadata untuk bucket tertentu. Saat fitur ini diaktifkan untuk sebuah bucket, OSS membuat pustaka indeks metadata untuk bucket tersebut dan mengindeks semua metadata objek di dalamnya. Setelah pustaka indeks metadata dibuat, OSS melakukan pemindaian tambahan secara hampir real-time pada file baru di bucket dan membuat indeks metadata untuk file-file tersebut.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah dan tambahkan deskripsi.
parser = argparse.ArgumentParser(description="contoh kueri meta terbuka")
# Tambahkan parameter baris perintah --region yang diperlukan, yang menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan parameter baris perintah --bucket yang diperlukan, yang menentukan nama bucket untuk dioperasikan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tambahkan parameter baris perintah --endpoint opsional, yang menentukan nama domain untuk digunakan saat mengakses OSS.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

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

    # Muat informasi otentikasi dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default yang disediakan oleh SDK.
    cfg = oss.config.load_default()
    # Tetapkan penyedia informasi otentikasi.
    cfg.credentials_provider = credentials_provider
    # Tetapkan wilayah berdasarkan argumen baris perintah.
    cfg.region = args.region
    # Jika endpoint diberikan, perbarui endpoint dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

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

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

    # Cetak kode status dan ID permintaan dari permintaan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          )

# Panggil fungsi utama saat dijalankan sebagai program utama.
if __name__ == "__main__":
    main()

Dapatkan informasi pustaka indeks metadata

Kode contoh berikut menunjukkan cara mengambil informasi tentang pustaka indeks metadata dari bucket tertentu.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah dan tambahkan parameter yang diperlukan.
parser = argparse.ArgumentParser(description="contoh status kueri meta")
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():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Muat informasi kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    # Tetapkan penyedia kredensial ke yang diperoleh dari variabel lingkungan.
    cfg.credentials_provider = credentials_provider
    # Tetapkan wilayah tempat layanan OSS berada.
    cfg.region = args.region
    # Jika endpoint diberikan, tetapkan endpoint kustom.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

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

    # Panggil metode get_meta_query_status untuk mendapatkan status kueri metadata dari bucket tertentu.
    result = client.get_meta_query_status(oss.GetMetaQueryStatusRequest(
            bucket=args.bucket,
    ))

    # Cetak informasi relevan dari hasil, termasuk kode status, ID permintaan, waktu pembuatan, waktu pembaruan, status, dan fase.
    print(f'kode status: {result.status_code},'
            f' ID permintaan: {result.request_id},'
            f' waktu pembuatan: {result.meta_query_status.create_time},'
            f' waktu pembaruan: {result.meta_query_status.update_time},'
            f' status: {result.meta_query_status.state},'
            f' fase: {result.meta_query_status.phase},'
    )

# Panggil fungsi utama saat skrip dijalankan langsung.
if __name__ == "__main__":
    main()

Kueri objek yang memenuhi kondisi tertentu

Kode contoh berikut menunjukkan cara menggunakan fitur pencarian skalar untuk menanyakan objek yang memenuhi kondisi tertentu dan mencantumkan informasi objek berdasarkan bidang dan metode pengurutan tertentu.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah untuk menerima parameter input pengguna.
parser = argparse.ArgumentParser(description="contoh kueri meta")
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():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Muat informasi otentikasi dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    # Tetapkan penyedia otentikasi.
    cfg.credentials_provider = credentials_provider
    # Tetapkan wilayah berdasarkan parameter input.
    cfg.region = args.region
    # Jika endpoint diberikan, perbarui endpoint dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

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

    # Jalankan operasi kueri meta.
    result = client.do_meta_query(oss.DoMetaQueryRequest(
            bucket=args.bucket,  # Tentukan bucket untuk dikueri.
            meta_query=oss.MetaQuery(  # Definisikan konten spesifik dari kueri.
                aggregations=oss.MetaQueryAggregations(  # Definisikan operasi agregasi.
                    aggregations=[  # Daftar agregasi.
                        oss.MetaQueryAggregation(  # Agregasi pertama: hitung total ukuran.
                            field='Size',
                            operation='sum',
                        ),
                        oss.MetaQueryAggregation(  # Agregasi kedua: temukan nilai maksimum.
                            field='Size',
                            operation='max',
                        )
                    ],
                ),
                next_token='',  # Token paginasi.
                max_results=80369,  # Jumlah maksimum hasil yang akan dikembalikan.
                query='{"Field": "Size","Value": "1048576","Operation": "gt"}',  # Kondisi kueri.
                sort='Size',  # Bidang pengurutan.
                order=oss.MetaQueryOrderType.DESC,  # Urutan pengurutan.
            ),
    ))

    # Keluarkan informasi dasar dari hasil kueri.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          # Bagian berikut yang dikomentari dapat diaktifkan sesuai kebutuhan untuk mendapatkan informasi lebih rinci.
          # f' file: {result.files},'
          # f' file: {result.files.file},'
          # f' waktu modifikasi file: {result.files.file.file_modified_time},'
          # f' etag: {result.files.file.etag},'
          # f' enkripsi sisi server: {result.files.file.server_side_encryption},'
          # f' jumlah tagging OSS: {result.files.file.oss_tagging_count},'
          # f' tagging OSS: {result.files.file.oss_tagging},'
          # f' kunci: {result.files.file.oss_tagging.taggings[0].key},'
          # f' nilai: {result.files.file.oss_tagging.taggings[0].value},'
          # f' kunci: {result.files.file.oss_tagging.taggings[1].key},'
          # f' nilai: {result.files.file.oss_tagging.taggings[1].value},'
          # f' meta pengguna OSS: {result.files.file.oss_user_meta},'
          # f' kunci: {result.files.file.oss_user_meta.user_metas[0].key},'
          # f' nilai: {result.files.file.oss_user_meta.user_metas[0].value},'
          # f' kunci: {result.files.file.oss_user_meta.user_metas[1].key},'
          # f' nilai: {result.files.file.oss_user_meta.user_metas[1].value},'
          # f' nama file: {result.files.file.filename},'
          # f' ukuran: {result.files.file.size},'
          # f' tipe objek OSS: {result.files.file.oss_object_type},'
          # f' kelas penyimpanan OSS: {result.files.file.oss_storage_class},'
          # f' ACL objek: {result.files.file.object_acl},'
          # f' CRC64 OSS: {result.files.file.oss_crc64},'
          # f' algoritma enkripsi sisi server pelanggan: {result.files.file.server_side_encryption_customer_algorithm},'
          # f' agregasi: {result.aggregations},'
          f' bidang: {result.aggregations.aggregations[0].field},'
          f' operasi: {result.aggregations.aggregations[0].operation},'
          f' bidang: {result.aggregations.aggregations[1].field},'
          f' operasi: {result.aggregations.aggregations[1].operation},'
          f' token berikutnya: {result.next_token},'
    )

    # Jika informasi file ada, cetak tag dan metadata yang ditentukan pengguna.
    if result.files:
        if result.files.file.oss_tagging.taggings:
            for r in result.files.file.oss_tagging.taggings:
                print(f'hasil: kunci: {r.key}, nilai: {r.value}')
        if result.files.file.oss_user_meta.user_metas:
            for r in result.files.file.oss_user_meta.user_metas:
                print(f'hasil: kunci: {r.key}, nilai: {r.value}')
    # Cetak hasil dari semua agregasi.
    if result.aggregations.aggregations:
        for r in result.aggregations.aggregations:
            print(f'hasil: bidang: {r.field}, operasi: {r.operation}')

if __name__ == "__main__":
    main()

Nonaktifkan fitur manajemen metadata

Kode contoh berikut menunjukkan cara menonaktifkan fitur manajemen metadata untuk bucket tertentu.

import argparse
import alibabacloud_oss_v2 as oss

# Buat objek ArgumentParser untuk memproses argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh penutupan kueri meta")
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():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Muat informasi kredensial dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default SDK.
    cfg = oss.config.load_default()
    # Tetapkan penyedia kredensial ke yang diperoleh dari variabel lingkungan.
    cfg.credentials_provider = credentials_provider
    # Tetapkan informasi wilayah dalam konfigurasi.
    cfg.region = args.region
    # Jika endpoint diberikan, tetapkan endpoint dalam konfigurasi.
    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 meta untuk bucket tertentu.
    result = client.close_meta_query(oss.CloseMetaQueryRequest(
            bucket=args.bucket,
    ))

    # Cetak kode status dan ID permintaan dari respons.
    print(f'kode status: {result.status_code}, ID permintaan: {result.request_id}')

# Panggil fungsi utama saat skrip ini dijalankan langsung.
if __name__ == "__main__":
    main()

Referensi

  • Untuk kode contoh lengkap untuk mengaktifkan fitur manajemen metadata, lihat open_meta_query.py.

  • Untuk kode contoh lengkap untuk mengambil informasi pustaka indeks metadata, lihat get_meta_query_status.py.

  • Untuk kode contoh lengkap untuk menanyakan objek yang memenuhi kondisi tertentu dan mencantumkan informasi objek berdasarkan bidang dan metode pengurutan tertentu, lihat do_meta_query.py.

  • Untuk kode contoh lengkap untuk menonaktifkan fitur manajemen metadata, lihat close_meta_query.py.