Indeks pencarian digunakan untuk kueri data multidimensi dan analisis statistik dalam skenario data besar dengan memanfaatkan indeks terbalik dan penyimpanan kolom. Jika bisnis Anda memerlukan kueri kompleks dan analisis data, Anda dapat membuat indeks pencarian serta menentukan atribut yang relevan sebagai bidang indeks. Dengan indeks pencarian, Anda dapat menjalankan kueri berdasarkan kolom non-kunci utama, kueri Boolean, kueri kabur, pencarian teks lengkap, dan kueri vektor tetangga terdekat (KNN). Indeks ini juga mendukung penghitungan nilai maksimum dan minimum, pengumpulan statistik jumlah baris, serta pengelompokan hasil kueri.
Informasi Latar Belakang
Indeks pencarian hanya berlaku untuk model Wide Column.
Indeks pencarian dirancang untuk menyelesaikan masalah kueri kompleks dalam skenario data besar. Sistem lain seperti database tradisional dan mesin pencari juga mampu menangani kueri data kompleks. Gambar berikut mengilustrasikan perbedaan antara Tablestore dengan database dan mesin pencari.
Tablestore menyediakan sebagian besar fitur dari database dan mesin pencari, kecuali operasi JOIN, transaksi, dan relevansi hasil pencarian. Tablestore juga menawarkan keandalan tinggi dari database serta mendukung kueri lanjutan dari mesin pencari. Oleh karena itu, Tablestore dapat menggantikan arsitektur umum yang menggabungkan database dan mesin pencari.
Jika Anda tidak memerlukan operasi JOIN, pemrosesan transaksi, atau analisis relevansi kompleks pada hasil pencarian, disarankan untuk menggunakan fitur indeks pencarian Tablestore.

Ikhtisar
Indeks pencarian digunakan untuk kueri data multidimensi dan analisis statistik dalam skenario data besar dengan memanfaatkan indeks terbalik dan penyimpanan kolom. Fitur ini mendukung berbagai metode kueri, termasuk kueri berdasarkan kolom non-kunci utama, kueri awalan, kueri kabur, kueri Boolean, kueri bersarang, kueri geo, pencarian teks lengkap, dan kueri vektor KNN. Selain itu, indeks pencarian mendukung operasi agregasi untuk mendapatkan nilai maksimum dan minimum, hitungan baris, jumlah unik, rata-rata, persentil, pengelompokan hasil, dan histogram.
Gambar berikut mengilustrasikan penggunaan indeks terbalik dan penyimpanan kolom dalam indeks pencarian, serta struktur indeks spasial multidimensi.

Dibandingkan dengan indeks layanan database tradisional seperti MySQL, fitur indeks pencarian Tablestore tidak tunduk pada prinsip pencocokan paling kiri. Oleh karena itu, fitur ini dapat digunakan dalam lebih banyak skenario. Biasanya, hanya satu indeks pencarian yang diperlukan untuk tabel data. Sebagai contoh, tabel data tentang informasi siswa mencakup kolom berikut: nama siswa, ID, jenis kelamin, kelas, dan alamat rumah. Untuk mengkueri data dengan kombinasi kondisi tertentu, seperti siswa bernama Zhang San di Kelas Tiga, siswa laki-laki yang tinggal dalam radius satu kilometer dari sekolah, dan siswa di Kelas Dua, Kelas Tiga dari komunitas perumahan tertentu, Anda dapat membuat indeks pencarian dan menambahkan kolom tersebut ke indeks pencarian.
Perbandingan
Selain kueri berdasarkan kolom kunci utama dalam tabel data, Tablestore menyediakan dua skema indeks untuk kueri data yang dipercepat: indeks sekunder dan indeks pencarian. Tabel berikut menjelaskan perbedaan di antara ketiga jenis indeks tersebut.
Tipe Indeks | Deskripsi | Skenario |
Kunci Utama Tabel Data | Tabel data mirip dengan peta besar. Tabel data mendukung kueri hanya berdasarkan kolom kunci utama. | Kueri berbasis kunci utama cocok untuk skenario di mana nilai semua kolom kunci utama atau awalan kunci utama dapat ditentukan. |
Indeks Sekunder | Anda dapat membuat satu atau lebih tabel indeks untuk tabel data dan melakukan kueri menggunakan kolom kunci utama dari tabel indeks. Kolom kunci utama tabel indeks terdiri dari semua kolom kunci utama dan sejumlah kolom yang telah ditentukan sebelumnya dari tabel data untuk mana tabel indeks dibuat. | Indeks sekunder cocok untuk skenario di mana kolom yang akan dikueri dapat ditentukan, jumlah kolom yang akan dikueri sedikit, dan nilai semua kolom kunci utama atau awalan kunci utama dapat ditentukan. |
Indeks Pencarian | Indeks pencarian menggunakan indeks terbalik, Bkd-trees, dan penyimpanan kolom untuk berbagai skenario kueri. | Indeks pencarian cocok untuk semua skenario kueri dan analisis di mana kueri berdasarkan kolom kunci utama dan indeks sekunder tabel data tidak dapat memenuhi kebutuhan bisnis Anda. Sebagai contoh, Anda dapat menggunakan indeks pencarian untuk melakukan kueri berdasarkan kolom non-kunci utama, kueri Boolean, kueri relasional, pencarian teks lengkap, kueri geo, kueri kabur, kueri bersarang, kueri exists, dan operasi agregasi. |
Skema
Indeks pencarian dapat digunakan secara luas dalam berbagai sistem aplikasi untuk kueri dan analisis data. Tabel berikut menjelaskan beberapa skenario di mana indeks pencarian dapat diterapkan.
Sistem Aplikasi | Skema |
Platform e-commerce | Anda dapat menggunakan indeks pencarian pada platform e-commerce untuk mengklasifikasikan produk dan menyaring atribut. Ini memudahkan pelanggan untuk mencari dan menyaring produk. |
Aplikasi media sosial | Anda dapat menggunakan indeks pencarian dalam aplikasi media sosial untuk mengkueri koneksi pengikut dan teman antar pengguna dan memberikan fitur rekomendasi dan pencocokan berdasarkan minat pengguna. |
Analisis log | Anda dapat menggunakan indeks pencarian untuk mengkueri log berdasarkan kondisi seperti kata kunci dan rentang waktu. Ini memungkinkan Anda mengidentifikasi masalah secara efisien dan menganalisis data log. |
Analisis data untuk IoT | Anda dapat menggunakan indeks pencarian untuk mengkueri dan menganalisis data perangkat dalam skenario Internet of Things (IoT). Sebagai contoh, Anda dapat menyaring data perangkat dan mengumpulkan statistik berdasarkan jenis perangkat dan lokasi geografis. |
Pemantauan kinerja aplikasi | Anda dapat menggunakan indeks pencarian untuk mengagregasi dan mengkueri data metrik, yang penting untuk memantau kinerja aplikasi. Sebagai contoh, Anda dapat menyaring dan mengagregasi data berdasarkan rentang waktu dan nama aplikasi. |
Layanan berbasis lokasi | Anda dapat menggunakan indeks pencarian untuk mengkueri lokasi geografis dan mencari titik-titik menarik terdekat seperti toko, atraksi, dan layanan. |
Mesin pencari teks | Anda dapat menggunakan indeks pencarian untuk pencarian teks lengkap dan pengurutan berdasarkan relevansi dalam mesin pencari teks. Dengan cara ini, Anda dapat mencari informasi seperti dokumen dan artikel secara efisien. |
Deskripsi Fitur
Fitur
Tabel berikut menjelaskan fitur-fitur indeks pencarian.
Fitur | Deskripsi | Referensi |
Kueri berdasarkan kolom kunci utama dan non-kunci utama | Anda dapat menggunakan indeks pencarian untuk mengkueri data berdasarkan kolom acak. Fitur ini memenuhi kebutuhan kueri dalam sebagian besar skenario. Jika kueri berdasarkan kolom kunci utama atau awalan kunci utama tidak memenuhi kebutuhan bisnis Anda, Anda dapat membuat indeks pencarian dan menambahkan kolom berdasarkan mana Anda ingin mengkueri data ke indeks pencarian. Dengan cara ini, Anda dapat menggunakan indeks pencarian untuk mengkueri data berdasarkan kolom tersebut. | Dokumentasi untuk metode kueri yang disediakan oleh indeks pencarian, seperti Kueri Dasar |
Kueri Boolean | Anda dapat menggabungkan beberapa bidang untuk mengkueri data secara efisien. Fitur ini cocok untuk skenario seperti sistem pesanan, analisis log, dan profil pengguna di mana Anda ingin menyaring data berdasarkan beberapa kondisi. Sebagai contoh, tabel data dalam skenario pesanan mungkin berisi puluhan bidang. Untuk mengkueri data berdasarkan berbagai kombinasi bidang dalam database relasional, Anda mungkin perlu membuat ratusan indeks. Selain itu, jika kombinasi tidak dipertimbangkan sebelumnya dan indeks yang sesuai tidak dibuat, Anda tidak dapat mengkueri data secara efisien. Namun, jika Anda menggunakan Tablestore, Anda hanya perlu membuat indeks pencarian dan menambahkan bidang berdasarkan mana Anda mungkin ingin mengkueri data ke indeks pencarian. Saat Anda menggunakan indeks pencarian untuk mengkueri data, Anda dapat menentukan kondisi berdasarkan kombinasi bidang dalam indeks pencarian berdasarkan kebutuhan bisnis Anda. Indeks pencarian juga mendukung operator logika seperti AND, OR, dan NOT. | |
Kueri Geo | Seiring dengan meningkatnya popularitas perangkat seluler, data lokasi geografis menjadi semakin penting. Data lokasi geografis digunakan dalam berbagai aplikasi seperti aplikasi media sosial, aplikasi pengiriman makanan, aplikasi olahraga, dan aplikasi Internet of Vehicles (IoV). Kueri berdasarkan data lokasi geografis diperlukan. Indeks pencarian mendukung fitur kueri berikut berdasarkan data lokasi geografis:
Indeks pencarian Tablestore memungkinkan Anda menggunakan fitur-fitur ini untuk mengkueri data lokasi geografis tanpa perlu menggunakan layanan database lain atau mesin pencari. | |
Pencarian Teks Lengkap | Anda dapat mengkueri data yang berisi string tertentu. Fitur ini cocok untuk skenario seperti analitik data besar, pencarian konten, manajemen pengetahuan, analisis media sosial, analisis log, sistem Q&A cerdas, tinjauan kepatuhan, dan rekomendasi cerdas. Indeks pencarian dapat memecah token data untuk mendukung pencarian teks lengkap. Anda dapat menggunakan indeks pencarian untuk mengurutkan hasil kueri berdasarkan hanya pada skor relevansi kata kunci berbasis BM25. Jika Anda ingin mengurutkan hasil kueri berdasarkan skor relevansi kompleks, kami sarankan Anda menggunakan sistem pencarian. Indeks pencarian mendukung metode tokenisasi berikut: tokenisasi kata tunggal, tokenisasi pembatas, tokenisasi berbasis unit semantik minimum, tokenisasi berbasis unit semantik maksimum, dan tokenisasi kabur. Anda dapat memilih metode tokenisasi berdasarkan kebutuhan Anda. Jika Anda ingin menyoroti string kueri dalam hasil kueri, Anda dapat menggunakan fitur sorotan. | |
Kueri Vektor KNN | Indeks pencarian menyediakan fitur kueri vektor KNN. Anda dapat menemukan item data yang paling mirip dalam dataset skala besar menggunakan vektor untuk melakukan pencarian tetangga terdekat yang mendekati. Fitur ini cocok untuk skenario seperti retrieval augmented generation (RAG), sistem rekomendasi, deteksi kesamaan untuk gambar, video, dan suara, dan Natural Language Processing (NLP). | |
Kueri Kabur | Indeks pencarian Tablestore mendukung fitur kueri wildcard, kueri awalan, dan kueri akhiran untuk memenuhi kebutuhan kueri kabur Anda dalam skenario berbeda.
| |
Kueri Exists | Anda dapat mengkueri apakah kolom dari suatu baris ada. Kueri exists juga disebut kueri NULL atau kueri nilai NULL. Fitur ini cocok untuk skenario seperti pemeriksaan integritas data dan pembersihan data. | |
Kueri Bersarang | Selain struktur datar, data yang dihasilkan oleh aplikasi online sering kali memiliki struktur kompleks dan berlapis-lapis, seperti gambar bertag. Sebagai contoh, database menyimpan sejumlah besar gambar, dan setiap gambar memiliki beberapa elemen seperti rumah, mobil, dan orang. Setiap elemen dalam gambar memiliki skor bobot unik. Skor tersebut dievaluasi berdasarkan ukuran dan posisi elemen dalam gambar. Oleh karena itu, setiap gambar memiliki beberapa tag. Setiap tag memiliki nama dan skor bobot. Jika Anda ingin menyaring gambar berdasarkan kondisi tag, Anda dapat menggunakan fitur kueri bersarang. Tag gambar disimpan dalam format JSON. Contoh: Anda dapat menggunakan fitur kueri bersarang untuk menangani kebutuhan penyimpanan dan kueri data yang memiliki hubungan logis berlapis-lapis secara efisien, memfasilitasi pemodelan data kompleks. Untuk bidang Bersarang dalam struktur data kompleks seperti JSON, Anda juga dapat mengaktifkan fitur sorotan untuk menempatkan informasi yang diperlukan secara tepat. | |
Collapse (distinct) | Indeks pencarian mendukung fitur collapse (distinct) untuk meningkatkan keragaman hasil kueri. Fitur ini membatasi jumlah kemunculan maksimum atribut dalam hasil kueri permintaan kueri. Ini menghindari hasil kueri berlebih yang memiliki atribut yang sama. Sebagai contoh, dalam skenario e-commerce, jika Anda mencari | |
Pengurutan | Di Tablestore, data tabel secara otomatis diurutkan berdasarkan urutan alfabetis kunci utama. Untuk mengurutkan data berdasarkan bidang lain, Anda harus menggunakan fitur pengurutan indeks pencarian. Indeks pencarian mendukung pengurutan berdasarkan satu atau lebih kondisi dalam urutan menaik atau menurun. Pengurutan dilakukan secara global pada semua data dalam indeks pencarian. Secara default, hasil yang dikembalikan oleh indeks pencarian diurutkan berdasarkan kunci utama dalam tabel data. |
|
Kueri Cocok Semua | Saat Anda menggunakan indeks pencarian untuk mengkueri data, Anda dapat menentukan bahwa Tablestore mengembalikan jumlah total baris yang memenuhi kondisi kueri. Fitur ini cocok untuk skenario seperti verifikasi data dan operasi berbasis data.
|
|
Agregasi | Indeks pencarian memungkinkan Anda melakukan operasi agregasi untuk mendapatkan nilai maksimum, nilai minimum, nilai rata-rata, jumlah, hitungan dan hitungan unik baris, persentil, dan statistik histogram. Anda juga dapat menggunakan indeks pencarian untuk mengelompokkan hasil. Ini memungkinkan Anda melakukan analisis statistik ringan. |
Wilayah yang Didukung
Fitur indeks pencarian tersedia di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Hong Kong), Jepang (Tokyo), Singapura, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Filipina (Manila), Thailand (Bangkok), Jerman (Frankfurt), Inggris (London), AS (Silicon Valley), AS (Virginia), dan SAU (Riyadh - Wilayah Mitra). Fitur kueri vektor KNN tidak didukung di wilayah AS (Silicon Valley).
Kemampuan Pemulihan Bencana
Secara default, indeks pencarian menyediakan kemampuan pemulihan bencana melalui redundansi zona di wilayah yang mendukung fitur penyimpanan redundansi zona (ZRS). Di wilayah-wilayah tersebut, data disimpan di beberapa zona. Jika terjadi gangguan seperti pemadaman listrik, pemadaman jaringan, atau kebakaran di suatu zona, pembacaan dan penulisan data tidak terpengaruh.
Indeks pencarian mendukung fitur ZRS di wilayah berikut: Tiongkok (Beijing), Tiongkok (Shanghai), Tiongkok (Hangzhou), Tiongkok (Shenzhen), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Hong Kong), Jepang (Tokyo), Indonesia (Jakarta), Singapura, dan Jerman (Frankfurt).
TTL (Time to Live)
Jika operasi UpdateRow dinonaktifkan untuk tabel data, Anda dapat menggunakan fitur time to live (TTL) dari indeks pencarian yang dibuat untuk tabel data tersebut. Untuk informasi lebih lanjut, lihat Tentukan TTL Indeks Pencarian.
Jika Anda ingin menyimpan data hanya untuk periode waktu tertentu tanpa memperbarui kolom waktu, Anda dapat mengimplementasikan fitur TTL dengan mempartisi tabel data menjadi beberapa tabel berdasarkan kolom waktu. Tabel berikut menjelaskan prinsip, aturan, dan manfaat partisi tabel berdasarkan waktu.
Item | Partisi Tabel Berdasarkan Waktu |
Prinsip | Partisi tabel data berdasarkan periode waktu tetap, seperti harian, mingguan, bulanan, atau tahunan. Kemudian, buat indeks pencarian untuk setiap tabel yang dipartisi. Dengan cara ini, Anda dapat menyimpan tabel untuk periode waktu tertentu berdasarkan kebutuhan bisnis Anda. Sebagai contoh, untuk menyimpan data selama enam bulan, Anda dapat menyimpan data untuk setiap bulan dalam tabel data. Label tabel data secara berurutan dari table_1 hingga table_6 dan buat indeks pencarian untuk setiap tabel data. Pastikan setiap tabel data dan indeks pencariannya secara eksklusif menyimpan data untuk bulan masing-masing. Untuk mengimplementasikan fitur TTL, Anda hanya perlu menghapus tabel data dan indeks pencarian terkait yang disimpan lebih dari enam bulan. Saat Anda mengkueri data menggunakan indeks pencarian, Anda hanya perlu mengkueri tabel data tertentu jika tabel data tersebut berisi semua data yang termasuk dalam rentang waktu yang Anda inginkan. Jika data yang termasuk dalam rentang waktu yang Anda inginkan mencakup beberapa tabel data, Anda perlu mengkueri semua tabel data tersebut dan menggabungkan hasil kueri. |
Aturan | Ukuran indeks pencarian tunggal bisa mencapai 50 miliar baris. Untuk memastikan kinerja kueri optimal, kami sarankan Anda membatasi ukuran indeks pencarian tunggal hingga 20 miliar baris atau kurang. |
Manfaat |
|
Versi Maksimal
Anda tidak dapat membuat indeks pencarian untuk tabel data yang telah ditentukan parameter versi maksimalnya.
Anda dapat menentukan timestamp saat menulis data ke kolom yang hanya mengizinkan satu versi. Jika Anda menulis data dengan nomor versi yang lebih besar terlebih dahulu dan kemudian menulis data dengan nomor versi yang lebih kecil, data dengan nomor versi yang lebih besar mungkin ditimpa oleh data dengan nomor versi yang lebih kecil.
Hasil dari permintaan Search dan ParallelScan mungkin tidak termasuk atribut timestamp.
Batasan
Indeks pencarian menyinkronkan data dari tabel data secara asinkron. Latensi data terjadi dan data tidak dapat dikueri secara real-time. Latensi biasanya kurang dari 3 detik. Untuk informasi lebih lanjut tentang batasan lain pada indeks pencarian, lihat Batasan Indeks Pencarian.
Penagihan
Saat Anda membuat indeks pencarian, data dalam indeks pencarian membutuhkan ruang penyimpanan. Saat Anda menggunakan indeks pencarian untuk mengkueri dan menganalisis data, sumber daya komputasi digunakan. Anda akan dikenakan biaya untuk penggunaan penyimpanan dan sumber daya komputasi yang dikonsumsi. Untuk informasi lebih lanjut, lihat Ikhtisar Penagihan.
Integrasi Pengembangan
Operasi API
Tablestore menyediakan operasi API untuk mengelola indeks pencarian dan mengkueri data menggunakan indeks pencarian. Anda dapat memanggil operasi Search atau ParallelScan untuk mengkueri data. Sebagian besar fitur yang disediakan oleh kedua operasi API tersebut sama. Namun, untuk meningkatkan kinerja dan throughput, operasi ParallelScan tidak menyediakan beberapa fitur dari operasi Search.
Kategori | Operasi | Deskripsi |
Manajemen Indeks | Membuat indeks pencarian. | |
Memperbarui konfigurasi indeks pencarian, termasuk konfigurasi TTL dan skema. | ||
Mengkueri detail tentang indeks pencarian. | ||
Mengkueri daftar indeks pencarian. | ||
Menghapus indeks pencarian. | ||
Kueri Data | Mendukung semua fitur indeks pencarian. Anda dapat memanggil operasi Search untuk mengkueri data menggunakan semua metode kueri yang didukung dan menganalisis data dengan melakukan operasi pengurutan dan agregasi. Hasil kueri dikembalikan berdasarkan urutan yang ditentukan.
| |
Mengekspor data secara paralel. Anda dapat memanggil operasi ParallelScan untuk mengkueri data menggunakan semua metode kueri yang didukung. Namun, untuk memastikan pengambilan hasil kueri yang lebih cepat, operasi ParallelScan tidak mendukung fitur analisis seperti pengurutan dan agregasi. Operasi ParallelScan menawarkan kinerja kueri yang unggul dibandingkan operasi Search. Saat operasi ParallelScan memproses satu permintaan kueri yang mencakup tugas pemindaian paralel, throughput-nya lima kali lipat dari operasi Search.
Saat Anda memanggil operasi ini, Anda harus memanggil operasi ComputeSplits untuk mengkueri jumlah maksimum tugas pemindaian paralel untuk satu permintaan ParallelScan. |
Metode Integrasi
Anda dapat menggunakan SDK Tablestore atau CLI Tablestore untuk melakukan operasi pada indeks pencarian.
Gunakan SDK Tablestore
Tablestore SDK for Java: Indeks Pencarian
Tablestore SDK for Go: Indeks Pencarian
Tablestore SDK for Python: Indeks Pencarian
Tablestore SDK for Node.js: Indeks Pencarian
Tablestore SDK for .NET: Indeks Pencarian
Tablestore SDK for PHP: Indeks Pencarian
FAQ
Referensi
Tablestore memungkinkan Anda mengkueri dan menganalisis data menggunakan fitur kueri SQL. Untuk informasi lebih lanjut, lihat Kueri SQL.
CatatanAnda juga dapat menggunakan mesin komputasi seperti MaxCompute, Spark, Hive, HadoopMR, Function Compute, dan Realtime Compute for Apache Flink untuk menganalisis data dalam Tablestore. Untuk informasi lebih lanjut, lihat Ikhtisar.
Lampiran: Pemetaan antara Pernyataan SQL dan Fitur Indeks Pencarian
Beberapa fitur indeks pencarian setara dengan pernyataan SQL tertentu. Tabel berikut menjelaskan pemetaan antara pernyataan SQL dan fitur indeks pencarian.
SQL | Fitur Indeks Pencarian | Referensi |
Show | DescribeSearchIndex | |
Select | Parameter ColumnsToGet dalam kueri | Dokumentasi untuk metode kueri yang disediakan oleh indeks pencarian, seperti Kueri Dasar |
From | Parameter IndexName dalam kueri Penting Indeks kolom tunggal didukung. Indeks multi-kolom tidak didukung. | Dokumentasi untuk metode kueri yang disediakan oleh indeks pencarian, seperti Kueri Dasar |
Where | Kondisi dalam kueri | Dokumentasi untuk metode kueri yang disediakan oleh indeks pencarian, seperti Kueri Dasar |
Order by | Parameter sort dalam kueri | |
Limit | Parameter limit dalam kueri | |
Delete |
|
|
Like | WildcardQuery | |
And | operator = and dalam BoolQuery | |
Or | operator = or dalam BoolQuery | |
Not | BoolQuery(mustNotQueries) | |
Between | RangeQuery | |
Null | ExistsQuery | |
In | TermsQuery | |
Min | Agregasi: min | |
Max | Agregasi: max | |
Avg | Agregasi: avg | |
Count | Agregasi: count | |
Count(distinct) | Agregasi: distinctCount | |
Sum | Agregasi: sum | |
Group By | GroupBy |