Gunakan kueri bersarang di Tablestore SDK for Go untuk mencocokkan kondisi dalam baris turunan yang sama dari bidang Nested.
Prasyarat
Instal Tablestore Go SDK dan inisialisasi klien.
Deskripsi
Setiap baris turunan dalam bidang Nested diindeks sebagai dokumen bersarang independen. Kueri bersarang memastikan bahwa kondisi pada beberapa bidang turunan cocok dalam baris turunan yang sama serta menghindari pencocokan lintas baris turunan.
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
Contoh berikut melakukan kueri data dan mengembalikan hingga 10 baris beserta jumlah total baris yang cocok.
tableName := "example_table"
indexName := "example_index"
query := &search.NestedQuery{Path: "items", Query: &search.TermQuery{FieldName: "items.name", Term: "alice"}, ScoreMode: search.ScoreMode_Avg}
searchQuery := search.NewSearchQuery().
SetQuery(query).
SetLimit(10).
SetGetTotalCount(true)
response, err := client.Search(&tablestore.SearchRequest{
TableName: tableName,
IndexName: indexName,
SearchQuery: searchQuery,
ColumnsToGet: &tablestore.ColumnsToGet{
ReturnAllFromIndex: true,
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.TotalCount)
fmt.Println(response.Rows)
Parameter
Permintaan kueri
request bertipe tablestore.SearchRequest dan berisi parameter berikut.
|
Name |
Type |
Description |
|
TableName (required) |
string |
Nama tabel data. |
|
IndexName (required) |
string |
Nama indeks pencarian. |
|
SearchQuery (required) |
search.SearchQuery |
Kondisi kueri dan konfigurasi kueri umum. |
|
ColumnsToGet (optional) |
*tablestore.ColumnsToGet |
Konfigurasi kolom yang dikembalikan. Jika parameter ini dihilangkan, hanya kolom kunci primer yang dikembalikan. |
|
RoutingValues (optional) |
[]*tablestore.PrimaryKey |
Nilai kunci primer untuk bidang routing kustom. Hilangkan parameter ini jika routing kustom tidak dikonfigurasi. |
|
TimeoutMs (optional) |
*int32 |
Periode timeout permintaan dalam milidetik. |
Konfigurasi kueri
Buat konfigurasi kueri dengan memanggil search.NewSearchQuery() dan konfigurasikan menggunakan metode berikut.
|
Name |
Type |
Description |
|
SetQuery (required) |
search.Query |
Menentukan kondisi kueri. |
|
SetOffset (optional) |
int32 |
Menentukan posisi awal. Nilai default: 0. Untuk paginasi berbasis offset, Offset + Limit tidak boleh melebihi 100.000. |
|
SetLimit (optional) |
int32 |
Menentukan jumlah maksimum baris yang dikembalikan. Nilai default: 10. Nilai maksimum: 100. Nilai 0 tidak mengembalikan baris apa pun. |
|
SetCollapse (optional) |
*search.Collapse |
Menciutkan hasil kueri. Untuk informasi selengkapnya, lihat Ciutkan hasil kueri. |
|
SetSort (optional) |
*search.Sort |
Menentukan urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Urutkan dan lakukan paginasi hasil. |
|
SetGetTotalCount (optional) |
bool |
Menentukan apakah akan menghitung semua baris yang cocok. Nilai default: false. |
|
SetToken (optional) |
[]byte |
Menentukan nilai NextToken yang dikembalikan oleh respons sebelumnya. Metode ini menghapus Sort karena token berisi kondisi pengurutan halaman sebelumnya. Jangan tentukan Offset saat menggunakan paginasi berbasis token. |
|
SetSearchFilter (optional) |
*search.SearchFilter |
Terapkan filter pasca-kueri. Untuk informasi selengkapnya, lihat Gunakan filter pasca-kueri. |
|
Aggregation (optional) |
...search.Aggregation |
Konfigurasikan agregasi. Untuk informasi selengkapnya, lihat Agregasi. |
|
GroupBy (optional) |
...search.GroupBy |
Konfigurasikan pengelompokan. Untuk informasi selengkapnya, lihat Agregasi. |
Kondisi kueri
Kueri bertipe search.NestedQuery dan berisi parameter berikut.
|
Name |
Type |
Description |
|
Path (required) |
string |
Jalur bidang Nested. |
|
Query (required) |
search.Query |
Kueri pada bidang turunan. Gunakan jalur lengkap seperti |
|
ScoreMode (optional) |
search.ScoreMode |
Metode yang digunakan untuk menggabungkan skor dari baris turunan yang cocok. |
|
InnerHits (optional) |
*search.InnerHits |
Mengembalikan baris turunan yang cocok dan dapat mengonfigurasi paginasi, pengurutan, serta penyorotan untuk baris turunan tersebut. |
Konfigurasi inner hits
InnerHits berisi parameter berikut.
|
Name |
Type |
Description |
|
Offset (optional) |
*int32 |
Posisi awal baris turunan yang cocok. |
|
Limit (optional) |
*int32 |
Jumlah baris turunan yang cocok yang dikembalikan. Nilai default: 3. |
|
Sort (optional) |
*search.Sort |
Urutan pengurutan baris turunan yang cocok. |
|
Highlight (optional) |
*search.Highlight |
Konfigurasi ringkasan dan penyorotan untuk bidang turunan Nested. Untuk informasi selengkapnya, lihat Ringkasan dan penyorotan. |
Kolom yang dikembalikan
request.ColumnsToGet bertipe tablestore.ColumnsToGet dan berisi parameter berikut.
|
Name |
Type |
Description |
|
Columns (optional) |
[]string |
Kolom atribut yang dikembalikan. Parameter ini hanya berlaku ketika ReturnAll dan ReturnAllFromIndex keduanya bernilai false. |
|
ReturnAll (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut dalam tabel data. Nilai default: false. |
|
ReturnAllFromIndex (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut yang diindeks. Nilai default: false. Jangan atur parameter ini dan ReturnAll ke true secara bersamaan. |
Respons
Metode Search mengembalikan nilai tablestore.SearchResponse. Tabel berikut menjelaskan bidang bisnis inti.
|
Name |
Type |
Description |
|
TotalCount |
int64 |
Jumlah total baris yang cocok. Nilainya bergantung pada SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Baris yang dikembalikan oleh kueri saat ini. Jumlahnya tidak melebihi nilai yang ditentukan oleh SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Hasil pencarian. Baca bidang ini saat Anda menggunakan penyorotan, inner hits bersarang, atau skor relevansi. |
|
NextToken |
[]byte |
Token untuk halaman berikutnya. Jika nilainya tidak kosong, teruskan ke kueri berikutnya. |
|
IsAllSuccess |
bool |
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya false, hasil parsial dikembalikan dan TotalCount mungkin kurang dari jumlah sebenarnya dari baris yang cocok. |
|
AggregationResults |
search.AggregationResults |
Hasil agregasi. |
|
GroupByResults |
search.GroupByResults |
Hasil pengelompokan. |