Utilice una consulta anidada en el Tablestore SDK for Go para hacer coincidir condiciones dentro de la misma fila secundaria de un campo Nested.
Requisitos previos
Instale Tablestore Go SDK e inicialice un cliente.
Descripción
Cada fila secundaria en un campo Nested se indexa como un documento anidado independiente. Una consulta anidada garantiza que las condiciones sobre varios campos secundarios coincidan dentro de la misma fila secundaria y evita coincidencias entre distintas filas secundarias.
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
A continuación se muestra un ejemplo que consulta datos y devuelve hasta 10 filas, además del número total de filas coincidentes.
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)
Parámetros
Solicitud de consulta
request es de tipo tablestore.SearchRequest y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
TableName (obligatorio) |
string |
El nombre de la tabla de datos. |
|
IndexName (obligatorio) |
string |
El nombre del índice de búsqueda. |
|
SearchQuery (obligatorio) |
search.SearchQuery |
La condición de consulta y las configuraciones comunes de la consulta. |
|
ColumnsToGet (opcional) |
*tablestore.ColumnsToGet |
La configuración de columnas a devolver. Si se omite este parámetro, solo se devuelven las columnas de clave principal. |
|
RoutingValues (opcional) |
[]*tablestore.PrimaryKey |
Valores de clave principal para campos de enrutamiento personalizado. Omita este parámetro si no se ha configurado el enrutamiento personalizado. |
|
TimeoutMs (opcional) |
*int32 |
El periodo de tiempo de espera de la solicitud en milisegundos. |
Configuración de la consulta
Cree una configuración de consulta mediante la llamada a search.NewSearchQuery() y configúrela con los siguientes métodos.
|
Nombre |
Tipo |
Descripción |
|
SetQuery (obligatorio) |
search.Query |
Especifica la condición de consulta. |
|
SetOffset (opcional) |
int32 |
Especifica la posición inicial. Valor predeterminado: 0. Para la paginación basada en desplazamiento, la suma de Offset + Limit no puede exceder 100,000. |
|
SetLimit (opcional) |
int32 |
Especifica el número máximo de filas a devolver. Valor predeterminado: 10. Valor máximo: 100. Un valor de 0 no devuelve ninguna fila. |
|
SetCollapse (opcional) |
*search.Collapse |
Colapsa los resultados de la consulta. Para obtener más información, consulte Collapse query results. |
|
SetSort (opcional) |
*search.Sort |
Especifica el orden de clasificación de los resultados. Para obtener más información, consulte Sort and paginate results. |
|
SetGetTotalCount (opcional) |
bool |
Especifica si se deben contar todas las filas coincidentes. Valor predeterminado: false. |
|
SetToken (opcional) |
[]byte |
Especifica el valor NextToken devuelto por la respuesta anterior. Este método borra Sort porque el token contiene las condiciones de clasificación de la página anterior. No especifique Offset cuando utilice la paginación basada en tokens. |
|
SetSearchFilter (opcional) |
*search.SearchFilter |
Aplica un filtro posterior a la consulta. Para obtener más información, consulte Use post-query filters. |
|
Aggregation (opcional) |
...search.Aggregation |
Configura agregaciones. Para obtener más información, consulte Aggregation. |
|
GroupBy (opcional) |
...search.GroupBy |
Configura la agrupación. Para obtener más información, consulte Aggregation. |
Condición de consulta
La consulta es de tipo search.NestedQuery y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Path (obligatorio) |
string |
La ruta del campo Nested. |
|
Query (obligatorio) |
search.Query |
La consulta sobre campos secundarios. Utilice una ruta completa como |
|
ScoreMode (opcional) |
search.ScoreMode |
El método utilizado para combinar las puntuaciones de las filas secundarias coincidentes. |
|
InnerHits (opcional) |
*search.InnerHits |
Devuelve las filas secundarias coincidentes y permite configurar la paginación, la clasificación y el resaltado para dichas filas. |
Configuración de InnerHits
InnerHits contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Offset (opcional) |
*int32 |
La posición inicial de las filas secundarias coincidentes. |
|
Limit (opcional) |
*int32 |
El número de filas secundarias coincidentes a devolver. Valor predeterminado: 3. |
|
Sort (opcional) |
*search.Sort |
El orden de clasificación de las filas secundarias coincidentes. |
|
Highlight (opcional) |
*search.Highlight |
La configuración de resumen y resaltado para los campos secundarios Nested. Para obtener más información, consulte Summary and highlighting. |
Columnas a devolver
request.ColumnsToGet es de tipo tablestore.ColumnsToGet y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Columns (opcional) |
[]string |
Las columnas de atributos a devolver. Este parámetro solo surte efecto cuando tanto ReturnAll como ReturnAllFromIndex son false. |
|
ReturnAll (opcional) |
bool |
Especifica si se deben devolver todas las columnas de atributos de la tabla de datos. Valor predeterminado: false. |
|
ReturnAllFromIndex (opcional) |
bool |
Especifica si se deben devolver todas las columnas de atributos indexadas. Valor predeterminado: false. No establezca este parámetro y ReturnAll en true al mismo tiempo. |
Respuesta
El método Search devuelve un valor tablestore.SearchResponse. La siguiente tabla describe los campos principales del negocio.
|
Nombre |
Tipo |
Descripción |
|
TotalCount |
int64 |
El número total de filas coincidentes. El valor depende de SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Las filas devueltas por la consulta actual. El número no excede el valor especificado por SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Los aciertos de búsqueda. Lea este campo cuando utilice resaltado, aciertos internos anidados o puntuaciones de relevancia. |
|
NextToken |
[]byte |
El token para la siguiente página. Si el valor no está vacío, páselo a la siguiente consulta. |
|
IsAllSuccess |
bool |
Indica si se consultaron todas las particiones del índice. Si el valor es false, se devuelven resultados parciales y TotalCount puede ser menor que el número real de filas coincidentes. |
|
AggregationResults |
search.AggregationResults |
Los resultados de la agregación. |
|
GroupByResults |
search.GroupByResults |
Los resultados de la agrupación. |