全部产品
Search
文档中心

Tablestore:Indeks Pencarian

更新时间:Jul 06, 2025

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_pencarian

Tabel 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_index

Masukkan 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:

  • FieldName (wajib): Nama bidang di indeks pencarian. Nilainya digunakan sebagai nama kolom. Tipe: String.

    Kolom di indeks pencarian bisa berupa kolom primary key atau kolom atribut dari tabel data.

  • FieldType (wajib): Jenis bidang. Untuk informasi lebih lanjut, lihat Pemetaan tipe data.

  • IsArray (opsional): Menentukan apakah nilainya adalah array. Tipe: Boolean.

    Jika Anda menetapkan parameter ini ke true, kolom menyimpan data sebagai array. Data yang ditulis ke kolom harus berupa array JSON. Contoh: ["a","b","c"].

    Nilai bertingkat adalah array. Jika Anda menetapkan FieldType ke Nested, lewati parameter ini.

  • Index (opsional): Menentukan apakah akan mengaktifkan pengindeksan untuk kolom. Tipe: Boolean.

    Nilai default: true. Nilai true menunjukkan bahwa Tablestore membuat indeks terbalik atau indeks spasial untuk kolom. Nilai false menunjukkan bahwa Tablestore tidak membuat indeks untuk kolom.

  • Analyzer (opsional): Jenis analyzer yang ingin Anda gunakan. Jika FieldType diatur ke Text, Anda dapat mengonfigurasi parameter ini. Jika Anda tidak mengonfigurasi parameter ini, jenis analyzer default tokenisasi kata tunggal digunakan. Untuk informasi lebih lanjut tentang tokenisasi, lihat Tokenisasi.

  • AnalyzerParameter: Konfigurasi tokenisasi saat Anda menggunakan tokenisasi kata tunggal. Ini mencakup parameter CaseSensitive dan DelimitWord.

    • CaseSensitive: Menentukan apakah akan mengaktifkan sensitivitas huruf besar/kecil. Nilai default: false. Jika Anda menetapkan parameter ini ke false, semua huruf dikonversi menjadi huruf kecil. Jika Anda tidak ingin sistem secara otomatis mengonversi huruf ke huruf kecil, atur parameter CaseSensitive ke true.

    • DelimitWord: Menentukan apakah akan memecah karakter alfanumerik. Nilai defaultnya adalah false. Huruf dan angka yang terhubung bersama tidak akan dipisahkan. Jika Anda ingin memisahkan angka dan huruf, atur parameter DelimitWord ke true.

  • EnableSortAndAgg (opsional): Menentukan apakah akan mengaktifkan pengurutan dan agregasi. Tipe: Boolean.

    Pengurutan hanya dapat diaktifkan untuk bidang yang EnableSortAndAgg disetel ke true. Untuk informasi lebih lanjut, lihat Pengurutan dan paging.

    Penting

    Bidang tipe Nested tidak mendukung pengurutan dan agregasi, tetapi subkolom dari bidang tipe Nested mendukung pengurutan dan agregasi.

  • Store (opsional): Menentukan apakah akan menyimpan nilai bidang di indeks pencarian. Tipe: Boolean.

    Jika Anda menetapkan parameter Store ke true, Anda dapat membaca nilai kolom dari indeks pencarian tanpa perlu menanyakan tabel data. Ini meningkatkan kinerja kueri.

  • IsVirtualField (opsional): Menentukan apakah kolom bersifat virtual. Tipe: Boolean. Nilai default: false. Parameter ini diperlukan hanya saat Anda menggunakan kolom virtual. Untuk informasi lebih lanjut tentang kolom virtual, lihat Kolom Virtual.

  • SourceFieldNames (opsional): Menentukan nama bidang sumber ke mana kolom virtual dipetakan di tabel data. Tipe: String. Parameter ini diperlukan ketika IsVirtualField disetel ke true.

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.

  • Name: Metode pengurutan. Nilai valid:

    • PrimaryKeySort menunjukkan pengurutan berdasarkan primary key.

    • FieldSort menunjukkan pengurutan berdasarkan nilai bidang.

      Hanya bidang yang pengindeksannya diaktifkan dan enableSortAndAgg disetel ke true yang dapat diurutkan sebelumnya.

  • Sorter: Parameter ini mencakup konfigurasi berikut:

    Ketika Name disetel ke PrimaryKeySort, hanya Order yang diperlukan. Ketika Name disetel ke FieldSort, FieldName dan Order keduanya diperlukan.

    • FieldName: nama bidang yang digunakan untuk mengurutkan data.

    • Order: Urutan pengurutan, yang dapat berupa urutan naik (ASC) atau urutan turun (DESC). Nilai default: ASC.

Mendapatkan daftar indeks pencarian

Sintaksis

list_search_index

Tabel 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_index

Menanyakan informasi tentang indeks pencarian

Sintaksis

describe_search_index -n nama_indeks_pencarian

Tabel 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_index

Parameter 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_indexed

Tabel 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

  1. Tanyakan data menggunakan indeks pencarian bernama search_index dan kembalikan semua kolom yang pengindeksannya diaktifkan:

    search -n search_index --return_all_indexed
  2. Masukkan 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.

  • Name: Jenis operasi agregasi, seperti min, max, sum, avg, dan count.

  • Aggregation: Parameter agregasi. Ini mencakup parameter berikut:

    • AggName: Nama kustom untuk agregasi yang digunakan untuk membedakan agregasi.

    • Field: Bidang yang digunakan untuk agregasi.

    • MissingValue: Nilai default bidang ketika kosong dalam sebuah rekaman. Jika MissingValue tidak disetel, rekaman diabaikan selama agregasi. Jika MissingValue disetel, nilai yang disetel digunakan sebagai nilai bidang untuk agregasi.

Hapus indeks pencarian

Sintaksis

drop_search_index -n nama_indeks_pencarian -y

Tabel 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