Jika Anda ingin menggunakan berbagai metode kueri, seperti kueri berdasarkan kolom non-primary key dan kueri Boolean untuk menanyakan data dalam tabel data, Anda dapat membuat indeks pencarian untuk tabel tersebut lalu menggunakannya untuk menanyakan data. Topik ini menjelaskan cara menggunakan Tablestore CLI untuk membuat, melihat, menggunakan, dan menghapus indeks pencarian.
Membuat indeks pencarian
Sintaksis
create_search_index -n nama_indeks_pencarianTabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Contoh | Deskripsi |
-i, --input | Tidak | /tmp/indexschema.json | File JSON yang digunakan untuk mengonfigurasi skema indeks pencarian. |
-n, --name | Ya | indeks_pencarian | Nama indeks pencarian. |
-t,--table | Tidak | mytable | Nama tabel data. |
--ttl | Tidak | -1 | Periode retensi data di indeks pencarian. Satuan: detik. Nilai default: -1. Nilai -1 menentukan bahwa data di indeks pencarian tidak pernah kedaluwarsa. Anda dapat menetapkan parameter ini ke -1 atau nilai yang lebih besar dari atau sama dengan 86400 (satu hari). Jika periode retensi data melebihi TTL, Tablestore secara otomatis menghapus data yang telah kedaluwarsa. Penting Untuk menggunakan fitur TTL dari indeks pencarian, Anda harus menonaktifkan operasi UpdateRow pada tabel data tempat indeks pencarian dibuat. Nilai TTL indeks pencarian bersifat independen dan harus lebih kecil atau sama dengan nilai TTL tabel data tempat indeks pencarian dibuat. Untuk informasi lebih lanjut, lihat Tentukan TTL indeks pencarian. |
Contoh
Buat indeks pencarian bernama search_index:
create_search_index -n search_indexMasukkan skema indeks sesuai petunjuk:
{
"IndexSetting": {
"RoutingFields": null
},
"FieldSchemas": [
{
"FieldName": "gid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "uid",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col2",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3",
"FieldType": "TEXT",
"Index": true,
"Analyzer": "single_word",
"AnalyzerParameter": {
"CaseSensitive": true,
"DelimitWord": null
},
"EnableSortAndAgg": false,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col1",
"FieldType": "KEYWORD",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": false
},
{
"FieldName": "col3V",
"FieldType": "LONG",
"Index": true,
"EnableSortAndAgg": true,
"Store": true,
"IsArray": false,
"IsVirtualField": true,
"SourceFieldNames": [
"col3"
]
}
]
}Tabel berikut menjelaskan parameter skema indeks pencarian.
Parameter | Wajib | Deskripsi |
IndexSetting | Tidak | Pengaturan indeks pencarian, yang mencakup parameter berikut: RoutingFields (opsional): Bidang routing kustom. Anda dapat menentukan beberapa kolom primary key sebagai bidang routing. Dalam banyak kasus, Anda hanya perlu menentukan satu bidang routing. Jika Anda menentukan beberapa bidang routing, sistem akan menggabungkan nilai-nilai dari bidang routing menjadi satu nilai sebagai kunci partisi. Tablestore mendistribusikan data yang ditulis ke indeks pencarian di berbagai partisi berdasarkan bidang routing yang ditentukan. Catatan data yang memiliki nilai bidang routing yang sama didistribusikan ke partisi yang sama. |
FieldSchemas | Ya | Daftar skema bidang. Anda dapat mengonfigurasi parameter berikut untuk setiap skema bidang:
|
IndexSort | Tidak | Pengaturan pra-pengurutan untuk indeks pencarian, yang mencakup parameter Sorters. Jika tidak ada nilai yang ditentukan untuk parameter IndexSort, nilai bidang diurutkan berdasarkan primary key secara default. Penting Anda dapat melewati pengaturan pra-pengurutan untuk indeks pencarian yang berisi bidang tipe Nested. Sorters (opsional): Metode pra-pengurutan indeks. Ini mencakup parameter Name dan Sorter. Anda dapat menggunakan metode PrimaryKeySort dan FieldSort. Untuk informasi lebih lanjut, lihat Melakukan pengurutan dan paging.
|
Mendapatkan daftar indeks pencarian
Sintaksis
list_search_indexTabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Contoh | Deskripsi |
-a, --all | Tidak | N/A | Menentukan bahwa indeks pencarian dari semua tabel data ditampilkan. |
-d, --detail | Tidak | N/A | Menentukan bahwa detail tentang indeks pencarian ditampilkan. |
-t,--table | Tidak | mytable | Nama tabel data. |
Contoh
Dapatkan daftar indeks pencarian dari tabel data saat ini:
list_search_indexMenanyakan informasi tentang indeks pencarian
Sintaksis
describe_search_index -n nama_indeks_pencarianTabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Contoh | Deskripsi |
-n, --name | Ya | search_index | Nama indeks pencarian. |
-o, --output | Tidak | /tmp/describeinfo.json | Ekspor hasil kueri ke file format JSON atau TXT di komputer Anda. |
-t,--table | Tidak | mytable | Nama tabel data. |
Contoh
Tanyakan informasi tentang indeks pencarian bernama search_index:
describe_search_index -n search_indexParameter Skema Indeks Pencarian dalam hasil yang dikembalikan menjelaskan skema indeks pencarian, dan TimeToLive menunjukkan periode retensi data untuk indeks pencarian.
Menanyakan data menggunakan indeks pencarian
Tablestore CLI memungkinkan Anda menggunakan metode kueri indeks pencarian berikut: kueri tepat, kueri terms, kueri match all, kueri match, kueri match phrase, kueri prefix, kueri range, kueri wildcard, kueri wildcard berbasis tokenisasi, kueri Boolean, kueri geo, dan kueri exists. Anda dapat memilih metode kueri berdasarkan kebutuhan bisnis Anda untuk menanyakan data dari berbagai dimensi.
Sintaksis
search -n nama_indeks_pencarian --return_all_indexedTabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Contoh | Deskripsi |
-c, --column | Tidak | col1,col2 | Kolom yang akan dikembalikan. Pisahkan beberapa kolom dengan koma (,). |
-n, --name | Ya | search_index | Nama indeks pencarian. |
-f, --print_format | Tidak | table | Format dalam hasil keluaran dicetak. Nilai default: table. |
--return_all | Tidak | N/A | Menentukan untuk mengembalikan semua kolom. |
--return_all_indexed | Tidak | N/A | Menentukan untuk mengembalikan semua kolom yang diindeks dalam indeks pencarian. |
-t,--table | Tidak | mytable | Nama tabel data. |
Contoh
Tanyakan data menggunakan indeks pencarian bernama search_index dan kembalikan semua kolom yang pengindeksannya diaktifkan:
search -n search_index --return_all_indexedMasukkan kondisi kueri sesuai dengan petunjuk sistem:
Kode sampel berikut memberikan contoh cara menanyakan baris di mana nilai kolom uid persis cocok dengan 10001 dan mendapatkan rata-rata nilai-nilai dalam kolom pid dari baris tersebut:
{ "Offset": -1, "Limit": 10, "Collapse": null, "Sort": null, "GetTotalCount": true, "Token": null, "Query": { "Name": "TermQuery", "Query": { "FieldName": "uid", "Term": 10001 } }, "Aggregations": [{ "Name": "avg", "Aggregation": { "AggName": "agg1", "Field": "pid" } }] }Tabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Deskripsi |
Offset | Tidak | Posisi dari mana kueri saat ini dimulai. |
Limit | Tidak | Jumlah maksimum baris yang ingin Anda dapatkan dari kueri saat ini. Jika Anda ingin kueri saat ini mengembalikan beberapa baris data acak, atur limit ke bilangan bulat positif. Untuk hanya menanyakan jumlah baris yang memenuhi kondisi kueri tanpa mengembalikan data spesifik, atur limit ke 0. |
Collapse | Tidak | Konfigurasi parameter collapse. Ini dapat digunakan untuk menciutkan set hasil kolom tertentu, sehingga data jenis tertentu hanya muncul sekali dalam set hasil. Ini memastikan keragaman dalam set hasil. Untuk informasi lebih lanjut, lihat Ciutkan (distinct). FieldName: Nama kolom berdasarkan mana set hasil diciutkan. Hanya kolom yang nilainya bertipe INTEGER, FLOATING-POINT, dan KEYWORD yang didukung. |
Sort | Tidak | Metode pengurutan hasil. Untuk informasi lebih lanjut, lihat bagian "Tentukan metode pengurutan saat Anda menanyakan data" dari Pengurutan dan paging. Jika metode pengurutan tidak ditentukan dalam kueri, hasil kueri dikembalikan oleh metode pra-pengurutan. Jika metode pra-pengurutan tidak ditentukan saat indeks pencarian dibuat, hasil kueri diurutkan berdasarkan primary key. |
GetTotalCount | Tidak | Menentukan apakah akan mengembalikan jumlah total baris yang memenuhi kondisi kueri. Nilai default parameter ini adalah false, yang menunjukkan bahwa jumlah total baris yang memenuhi kondisi kueri tidak dikembalikan. Jika parameter ini disetel ke true, kinerja kueri akan terpengaruh. Untuk mendapatkan jumlah total baris yang cocok, atur GetTotalCount ke true. |
Token | Tidak | Jika Tablestore tidak dapat membaca semua data yang memenuhi kondisi kueri, Tablestore mengembalikan Token. Anda dapat menggunakan nilai Token untuk melanjutkan membaca data berikutnya. Saat Anda membaca data untuk pertama kali, atur nilai token ke null. |
Query | Ya | Metode kueri. Metode kueri berikut didukung: match all query (MatchAllQuery), match query (MatchQuery), match phrase query (MatchPhraseQuery), term query (TermQuery), terms query (TermsQuery), dan prefix query (PrefixQuery). |
Aggregations | Tidak | Konfigurasi operasi agregasi. Anda dapat melakukan operasi agregasi untuk mendapatkan nilai minimum, maksimum, jumlah, rata-rata, dan hitungan serta hitungan unik dari baris. Untuk informasi lebih lanjut, lihat Agregasi.
|
Hapus indeks pencarian
Sintaksis
drop_search_index -n nama_indeks_pencarian -yTabel berikut menjelaskan parameter yang digunakan.
Parameter | Wajib | Contoh | Deskripsi |
-n, --name | Ya | search_index | Nama indeks pencarian. |
-t,--table | Tidak | mytable | Nama tabel data. |
-y, --yes | Ya | N/A | Menentukan bahwa informasi konfirmasi ditampilkan. Parameter ini diperlukan. |
Contoh
Hapus indeks pencarian bernama search_index:
drop_search_index -n search_index -y