Use el Tablestore SDK for Go para consultar campos JSON Object o JSON Nested en un índice de búsqueda.
Requisitos previos
Antes de empezar, complete las siguientes preparaciones:
Instale Tablestore Go SDK e inicialice un cliente.
Cree un índice de búsqueda que contenga un campo JSON. Para obtener más información, consulte Create a search index.
Descripción
Un campo JSON admite indexación de tipo Object y Nested. El tipo Object no conserva los límites de los objetos dentro de un arreglo, por lo que distintos objetos pueden satisfacer diferentes condiciones de consulta. El tipo Nested indexa cada objeto de un arreglo como una fila secundaria independiente y garantiza que varias condiciones coincidan dentro del mismo elemento del arreglo.
|
Tipo de índice JSON |
Método de consulta |
|
JsonType_OBJECT |
No conserva los límites de los objetos en un arreglo. Use la ruta completa del campo secundario en una consulta estándar, como |
|
JsonType_NESTED |
Conserva las relaciones entre campos dentro del mismo objeto. Use NestedQuery para consultar objetos en un arreglo. |
Los SubFieldSchemas de un campo JSON no pueden contener un campo secundario de tipo Vector.
Consultar un campo 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)
Consultar un campo 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)
Parámetros
Un campo Object usa los parámetros del tipo de consulta seleccionado. Un campo Nested usa search.NestedQuery. Para las configuraciones de consulta comunes, consulte Term query. Para los parámetros de NestedQuery, consulte Nested query.
Consulta de campo Object
|
Nombre |
Tipo |
Descripción |
|
FieldName (obligatorio) |
string |
La ruta completa del campo secundario JSON, como |
|
Valor de consulta (obligatorio) |
interface{} |
El nombre y el tipo dependen del tipo de consulta seleccionado. |
Consulta de campo Nested
|
Nombre |
Tipo |
Descripción |
|
Path (obligatorio) |
string |
La ruta del campo JsonType_NESTED. |
|
Query (obligatorio) |
search.Query |
La condición de consulta sobre los campos secundarios. |
|
ScoreMode (opcional) |
search.ScoreMode |
El método para combinar las puntuaciones de las filas secundarias. |