Anda dapat menggunakan metode CreateSearchIndex untuk membuat indeks pencarian pada tabel data. Satu tabel data dapat memiliki beberapa indeks pencarian. Saat membuat indeks pencarian, tambahkan bidang yang ingin dikueri ke dalam indeks tersebut dan konfigurasikan opsi lanjutan seperti rute kustom dan pengurutan awal.
Prasyarat
-
Client Tablestore telah diinisialisasi. Untuk informasi selengkapnya, lihat Inisialisasi client Tablestore.
-
Tabel data telah dibuat dengan `max versions` diatur ke 1 dan `time to live` diatur ke -1. Untuk informasi selengkapnya, lihat Buat tabel data.
Catatan penggunaan
Tipe data bidang dalam indeks pencarian harus sesuai dengan tipe data bidang yang bersesuaian dalam tabel data.
API
/**
* Buat indeks pencarian.
* @api
*
* @param [] $request
* Parameter permintaan, seperti nama tabel dan konfigurasi indeks.
* @return [] Respons.
* @throws OTSClientException Dilempar jika pemeriksaan parameter gagal atau server mengembalikan error verifikasi.
* @throws OTSServerException Dilempar jika server Tablestore mengembalikan error.
* @example "src/examples/CreateSearchIndex.php"
*/
public function createSearchIndex(array $request)
Parameter
Tentukan nama tabel (`table_name`), nama indeks pencarian (`index_name`), dan skema indeks (`schema`). Skema mencakup `field_schemas` (pengaturan bidang), `index_setting` (pengaturan indeks), dan `index_sort` (pengaturan pengurutan awal).
|
Parameter |
Deskripsi |
|
table_name |
Nama tabel data. |
|
index_name |
Nama indeks pencarian. |
|
field_schemas |
Daftar skema bidang. Setiap `field_schema` mencakup parameter berikut:
|
|
index_setting |
Pengaturan indeks, termasuk pengaturan `routing_fields`. routing_fields (Opsional): Bidang routing kustom. Anda dapat memilih beberapa kolom kunci primer sebagai bidang routing. Dalam kebanyakan kasus, cukup atur satu bidang saja. Jika Anda mengatur beberapa kunci routing, sistem akan menggabungkan nilai-nilainya menjadi satu nilai tunggal. Saat data indeks ditulis, sistem menghitung lokasi distribusi data indeks berdasarkan nilai bidang routing. Catatan dengan nilai bidang routing yang sama akan diindeks ke partisi data yang sama. |
|
index_sort |
Pengaturan pengurutan awal indeks, termasuk pengaturan `sorters`. Default: diurutkan berdasarkan kunci primer. Catatan
Indeks yang berisi bidang bertipe Nested tidak mendukung `index_sort` dan tidak diurutkan sebelumnya. sorters (Wajib): Metode pengurutan awal untuk indeks pencarian. Mendukung PrimaryKeySort dan FieldSort. Untuk informasi selengkapnya, lihat Pengurutan dan penomoran halaman.
|
Contoh
Buat indeks pencarian dengan kolom-kolom berikut: keyword (Keyword), text (Text), geo (Geo-point), long (Long), double (Double), boolean (Boolean), array (Keyword), dan nested (Nested). Kolom nested berisi subkolom nested_keyword bertipe Keyword. Indeks diurutkan berdasarkan kunci primer dan tidak pernah kedaluwarsa.
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'schema' => array(
'field_schemas' => array(
array(
'field_name' => 'keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'text',
'field_type' => FieldTypeConst::TEXT,
'analyzer' => 'single_word',
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'geo',
'field_type' => FieldTypeConst::GEO_POINT,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'long',
'field_type' => FieldTypeConst::LONG,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'double',
'field_type' => FieldTypeConst::DOUBLE,
'index' => true,
'enable_sort_and_agg' => true,
'is_array' => false
),
array(
'field_name' => 'boolean',
'field_type' => FieldTypeConst::BOOLEAN,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => false
),
array(
'field_name' => 'array',
'field_type' => FieldTypeConst::KEYWORD,
'index' => true,
'enable_sort_and_agg' => false,
'is_array' => true
),
array(
'field_name' => 'nested',
'field_type' => FieldTypeConst::NESTED,
'index' => false,
'enable_sort_and_agg' => false,
'field_schemas' => array(
array(
'field_name' => 'nested_keyword',
'field_type' => FieldTypeConst::KEYWORD,
'index' => false,
'enable_sort_and_agg' => false,
'is_array' => false
)
)
),
),
'index_setting' => array(
'routing_fields' => array("pk1")
),
// "index_sort" => array(// Indeks yang berisi bidang bertipe Nested tidak mendukung index_sort dan tidak diurutkan sebelumnya.
// array(
// 'field_sort' => array(
// 'field_name' => 'keyword',
// 'order' => SortOrderConst::SORT_ORDER_ASC,
// 'mode' => SortModeConst::SORT_MODE_AVG,
// )
// ),
// array(
// 'pk_sort' => array(
// 'order' => SortOrderConst::SORT_ORDER_ASC
// )
// ),
// )
)
);
$response = $otsClient->createSearchIndex($request);
FAQ
Referensi
-
Setelah membuat indeks pencarian, gunakan metode kuerinya untuk melakukan kueri data multidimensi. Metode kueri yang didukung mencakup kueri tepat, kueri istilah, Pencocokan semua kueri, kueri cocok, permintaan pencocokan frasa, kueri awalan, kueri rentang, kueri wildcard, kueri geografis, Kueri Boolean, kueri bersarang, dan kueri exists.
-
Terapkan pengurutan dan penomoran halaman atau collapsing (deduplikasi) pada hasil kueri.
-
Kelola indeks pencarian sesuai kebutuhan. Untuk informasi selengkapnya, lihat Ubah skema secara dinamis, Daftar indeks pencarian, Kueri deskripsi indeks pencarian, dan Hapus indeks pencarian.
-
Untuk melakukan analisis data seperti mencari nilai maksimum dan minimum, menghitung jumlah, atau menghitung jumlah baris, gunakan fitur agregasi statistik atau fitur kueri SQL.
-
Untuk mengekspor data secara cepat tanpa memerlukan urutan tertentu, gunakan fitur Pemindaian paralel.