Gunakan Tablestore SDK untuk Go guna melakukan kueri terhadap bidang JSON Object atau JSON Nested dalam indeks pencarian.
Prasyarat
Sebelum memulai, lengkapi persiapan berikut:
-
Instal Tablestore Go SDK dan inisialisasi klien.
-
Buat indeks pencarian yang berisi bidang JSON. Untuk informasi selengkapnya, lihat Create a search index.
Deskripsi
Bidang JSON mendukung pengindeksan tipe Object dan Nested. Tipe Object tidak mempertahankan batas objek dalam array, sehingga objek yang berbeda dapat memenuhi kondisi kueri yang berbeda. Sebaliknya, indeks Nested mengindeks setiap objek dalam array sebagai baris turunan independen dan memastikan bahwa beberapa kondisi cocok dalam elemen array yang sama.
|
Jenis indeks JSON |
Metode kueri |
|
JsonType_OBJECT |
Tidak mempertahankan batas objek dalam array. Gunakan jalur lengkap bidang turunan dalam kueri biasa, seperti |
|
JsonType_NESTED |
Mempertahankan hubungan bidang dalam objek yang sama. Gunakan NestedQuery untuk melakukan kueri terhadap objek dalam array. |
SubFieldSchemas dari bidang JSON tidak boleh berisi bidang turunan Vector.
Kueri bidang Object
tableName := "example_table"
indexName := "example_index"
query := &search.TermQuery{FieldName: "profile.city", Term: "hangzhou"}
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)
Kueri bidang Nested
tableName := "example_table"
indexName := "example_index"
query := &search.NestedQuery{Path: "orders", Query: &search.TermQuery{FieldName: "orders.product", Term: "book"}, ScoreMode: search.ScoreMode_None}
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
Bidang Object menggunakan parameter dari jenis kueri yang dipilih. Bidang Nested menggunakan search.NestedQuery. Untuk konfigurasi kueri umum, lihat Term query. Untuk parameter NestedQuery, lihat Nested query.
Kueri bidang Object
|
Nama |
Tipe |
Deskripsi |
|
FieldName (wajib) |
string |
Jalur lengkap bidang turunan JSON, seperti |
|
Nilai kueri (wajib) |
interface{} |
Nama dan tipe bergantung pada jenis kueri yang dipilih. |
Kueri bidang Nested
|
Nama |
Tipe |
Deskripsi |
|
Path (wajib) |
string |
Jalur bidang JsonType_NESTED. |
|
Query (wajib) |
search.Query |
Kondisi kueri pada bidang turunan. |
|
ScoreMode (opsional) |
search.ScoreMode |
Metode yang digunakan untuk menggabungkan skor dari baris turunan. |