全部产品
Search
文档中心

Object Storage Service:Pengindeksan data (Python SDK V1)

更新时间:Nov 29, 2025

Anda dapat menggunakan fitur pengindeksan data untuk menemukan objek dalam bucket yang memenuhi kondisi tertentu secara cepat. Kondisi tersebut dapat mencakup nama objek, ETag, kelas penyimpanan, ukuran, dan waktu modifikasi terakhir. Fitur ini memungkinkan Anda menentukan kondisi filter saat mencari objek, serta mengurutkan dan mengagregasi hasil kueri sesuai kebutuhan, sehingga meningkatkan efisiensi dalam menemukan objek target.

Catatan penggunaan

  • Fitur pengindeksan data hanya didukung oleh Python SDK versi 2.16.0 dan yang lebih baru.

  • Fitur pengindeksan data hanya tersedia untuk bucket di wilayah China (Hangzhou). Untuk informasi selengkapnya, lihat Pengindeksan data.

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses menggunakan OSS SDK untuk Python 1.0.

  • Dalam topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

Aktifkan pengindeksan data

Kode berikut menunjukkan cara mengaktifkan pengindeksan data untuk sebuah bucket. Setelah diaktifkan, OSS akan membuat indeks metadata untuk bucket tersebut dan membangun indeks metadata untuk semua objek di dalamnya. Setelah indeks selesai dibuat, OSS melakukan pemindaian inkremental hampir real-time terhadap file baru di bucket dan membangun indeks metadatanya.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tetapkan titik akhir ke yang sesuai dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tetapkan wilayah ke yang sesuai dengan titik akhir, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket yang sebenarnya.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Aktifkan pengindeksan data.
bucket.open_bucket_meta_query()

Dapatkan status pengindeksan data

Kode berikut menunjukkan cara mengambil status pengindeksan data untuk bucket tertentu.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tetapkan titik akhir ke yang sesuai dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tetapkan wilayah ke yang sesuai dengan titik akhir, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket yang sebenarnya.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Dapatkan status pengindeksan data untuk bucket yang ditentukan.
get_result = bucket.get_bucket_meta_query_status()

# Cetak statusnya.
print(get_result.state)

Kueri objek yang memenuhi kondisi tertentu

Kode berikut menunjukkan cara melakukan kueri objek yang memenuhi kondisi tertentu dan menampilkan informasi objek berdasarkan bidang serta urutan pengurutan yang ditentukan.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import MetaQuery, AggregationsRequest
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tetapkan titik akhir ke yang sesuai dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tetapkan wilayah ke yang sesuai dengan titik akhir, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket yang sebenarnya.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Lakukan kueri objek yang memenuhi kondisi tertentu, dan tampilkan informasi objek berdasarkan bidang dan urutan pengurutan yang ditentukan.
# Kueri file yang ukurannya kurang dari 1 MB, kembalikan maksimal 10 hasil, dan urutkan hasil secara ascending.
do_meta_query_request = MetaQuery(max_results=10, query='{"Field": "Size","Value": "1048576","Operation": "lt"}', sort='Size', order='asc')
result = bucket.do_bucket_meta_query(do_meta_query_request)

# Cetak nama objek.
print(result.files[0].file_name)
# Cetak ETag objek.
print(result.files[0].etag)
# Cetak tipe objek.
print(result.files[0].oss_object_type)
# Cetak kelas penyimpanan objek.
print(result.files[0].oss_storage_class)
# Cetak nilai CRC 64-bit objek.
print(result.files[0].oss_crc64)
# Cetak izin akses objek.
print(result.files[0].object_acl)

Nonaktifkan Fitur Manajemen Metadata

Kode berikut menunjukkan cara menonaktifkan fitur pengindeksan data untuk bucket tertentu.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tetapkan titik akhir ke yang sesuai dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tetapkan wilayah ke yang sesuai dengan titik akhir, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket yang sebenarnya.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Nonaktifkan fitur pengindeksan data untuk bucket yang ditentukan.
bucket.close_bucket_meta_query()

Referensi

  • Untuk informasi selengkapnya tentang operasi API untuk mengaktifkan pengindeksan data, lihat OpenMetaQuery.

  • Untuk informasi selengkapnya tentang operasi API untuk mengambil status pengindeksan data, lihat GetMetaQueryStatus.

  • Untuk informasi selengkapnya tentang operasi API untuk melakukan kueri objek yang memenuhi kondisi tertentu dan menampilkan informasi objek berdasarkan bidang serta urutan pengurutan yang ditentukan, lihat DoMetaQuery.

  • Untuk informasi selengkapnya tentang operasi API untuk menonaktifkan pengindeksan data, lihat CloseMetaQuery.