Anda dapat menggunakan metode CreateSearchIndex untuk membuat search index pada tabel data. Satu tabel data dapat memiliki beberapa search index. Saat membuat search index, tambahkan bidang yang ingin dikueri ke dalam indeks tersebut dan konfigurasikan opsi lanjutan seperti custom route dan presorting.
Prasyarat
Client Tablestore telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize a Tablestore client.
Tabel data telah dibuat dengan nilai `max versions` sebesar 1 dan nilai `time to live` sebesar -1. Untuk informasi selengkapnya, lihat Create a data table.
Catatan penggunaan
Saat membuat indeks pencarian, Tipe data bidang dalam indeks pencarian harus sesuai dengan tipe data bidang yang bersangkutan di tabel data.
API
/**
* Buat search index.
* @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
Saat membuat search index, Anda harus menentukan nama tabel (`table_name`), nama search index (`index_name`), dan skema indeks (`schema`). Skema mencakup `field_schemas` (pengaturan semua bidang indeks), `index_setting` (pengaturan indeks), dan `index_sort` (pengaturan presorting indeks). Tabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi |
table_name | Nama tabel data. |
index_name | Nama indeks pencarian. |
field_schemas | Daftar skema bidang. Setiap `field_schema` berisi parameter berikut:
|
index_setting | Pengaturan indeks, yang mencakup pengaturan `routing_fields`. routing_fields (Opsional): Custom routing fields. Anda dapat memilih beberapa Kolom kunci primer sebagai routing fields. Dalam kebanyakan kasus, Anda hanya perlu mengatur satu. Jika Anda mengatur beberapa routing keys, sistem akan menggabungkan nilai-nilainya menjadi satu nilai tunggal. |
index_sort | Pengaturan presorting indeks, yang mencakup pengaturan `sorters`. Jika tidak diatur, data secara default diurutkan berdasarkan kunci primer. Catatan Indeks yang berisi bidang bertipe Nested tidak mendukung `index_sort` dan tidak dipresort. sorters: wajib. Parameter ini menentukan metode presorting untuk search index. PrimaryKeySort dan FieldSort didukung. Untuk informasi selengkapnya, lihat Sorting and paging.
|
Contoh
Kode contoh berikut menunjukkan cara membuat search index. Dalam contoh ini, search index terdiri dari kolom-kolom berikut: kolom keyword bertipe Keyword, kolom text bertipe Text, kolom geo bertipe Geo-point, kolom long bertipe Long, kolom double bertipe Double, kolom boolean bertipe Boolean, kolom array bertipe Keyword, dan kolom nested bertipe Nested. Kolom nested berisi subkolom nested_keyword bertipe Keyword. Data dalam search index dipresort berdasarkan kunci primer tabel data dan dikonfigurasi agar 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 dipresort.
// 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
Dokumen terkait
Setelah membuat search index, Anda dapat menggunakan metode kuerinya untuk mengkueri data lintas dimensi. Metode kueri yang didukung meliputi term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, geo query, Boolean query, nested query, dan exists query.
Saat mengkueri data, Anda dapat menerapkan sorting dan pagination atau collapsing (menghapus duplikat) pada set hasil.
Setelah membuat search index, Anda dapat mengelolanya sesuai kebutuhan. Untuk informasi selengkapnya, lihat Dynamically modify schema, List search indexes, Query the description of a search Index, dan Delete a search index.
Jika ingin melakukan analisis data, seperti mencari nilai maksimum dan minimum, menghitung jumlah, atau menghitung jumlah baris, Anda dapat menggunakan fitur statistical aggregation atau fitur SQL query.
Jika ingin mengekspor data dengan cepat dan urutan seluruh set hasil tidak penting, Anda dapat menggunakan fitur parallel scan.