Use una consulta de prefijo en el Tablestore SDK for Go para buscar los valores que comienzan con un prefijo específico.
Requisitos previos
Instale el Tablestore Go SDK e inicialice el cliente.
Descripción
Una consulta de prefijo busca los valores que comienzan con el prefijo especificado. En un campo de tipo Text, la consulta se aplica a los términos tokenizados y no a la cadena original completa. La búsqueda distingue entre mayúsculas y minúsculas.
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, junto con el número total de filas coincidentes.
tableName := "example_table"
indexName := "example_index"
query := &search.PrefixQuery{FieldName: "category", Prefix: "book-"}
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
El parámetro request es de tipo tablestore.SearchRequest y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
TableName (obligatorio) |
string |
Nombre de la tabla de datos. |
|
IndexName (obligatorio) |
string |
Nombre del índice de búsqueda. |
|
SearchQuery (obligatorio) |
search.SearchQuery |
Condición de consulta y configuraciones generales de la misma. |
|
ColumnsToGet (opcional) |
*tablestore.ColumnsToGet |
Configuración de las columnas que se devuelven. Si se omite este parámetro, solo se devuelven las columnas de clave principal. |
|
RoutingValues (opcional) |
[]*tablestore.PrimaryKey |
Valores de clave principal para los campos de enrutamiento personalizado. Omita este parámetro si no configuró el enrutamiento personalizado. |
|
TimeoutMs (opcional) |
*int32 |
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 métodos descritos a continuación.
|
Nombre |
Tipo |
Descripción |
|
SetQuery (obligatorio) |
search.Query |
Especifica la condición de consulta. |
|
SetOffset (opcional) |
int32 |
Indica la posición de inicio. Valor predeterminado: 0. En la paginación basada en desplazamiento, la suma de Offset y Limit no puede superar 100 000. |
|
SetLimit (opcional) |
int32 |
Define el número máximo de filas que se devuelven. Valor predeterminado: 10. Valor máximo: 100. Si establece 0, no se devuelve ninguna fila. |
|
SetHighlight (opcional) |
*search.Highlight |
Configura resúmenes y resaltado para los campos de tipo Text. Para obtener más información, consulte Summary and highlighting. |
|
SetCollapse (opcional) |
*search.Collapse |
Colapsa los resultados de la consulta. Para obtener más información, consulte Collapse query results. |
|
SetSort (opcional) |
*search.Sort |
Establece el orden de clasificación de los resultados. Para obtener más información, consulte Sort and paginate results. |
|
SetGetTotalCount (opcional) |
bool |
Determina si se cuentan todas las filas coincidentes. Valor predeterminado: false. |
|
SetToken (opcional) |
[]byte |
Especifica el valor NextToken que devolvió la respuesta anterior. Este método borra Sort porque el token ya incluye las condiciones de clasificación de la página previa. No establezca 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 agrupaciones. Para obtener más información, consulte Aggregation. |
Condición de consulta
La consulta es de tipo search.PrefixQuery y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
FieldName (obligatorio) |
string |
Nombre del campo de índice que se va a consultar. |
|
Prefix (obligatorio) |
string |
Prefijo que se debe buscar. |
Columnas que se devuelven
El parámetro request.ColumnsToGet es de tipo tablestore.ColumnsToGet y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Columns (opcional) |
[]string |
Columnas de atributos que se van a devolver. Este parámetro solo surte efecto cuando ReturnAll y ReturnAllFromIndex son false. |
|
ReturnAll (opcional) |
bool |
Indica si se devuelven todas las columnas de atributos de la tabla de datos. Valor predeterminado: false. |
|
ReturnAllFromIndex (opcional) |
bool |
Determina si se devuelven todas las columnas de atributos indexadas. Valor predeterminado: false. No establezca este parámetro y ReturnAll como true al mismo tiempo. |
Respuesta
El método Search devuelve un valor de tipo tablestore.SearchResponse. La siguiente tabla describe los campos principales.
|
Nombre |
Tipo |
Descripción |
|
TotalCount |
int64 |
Número total de filas coincidentes. El valor depende de SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Filas que devuelve la consulta actual. La cantidad no supera el valor definido en SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Coincidencias de la búsqueda. Lea este campo cuando utilice resaltado, inner hits anidados o puntuaciones de relevancia. |
|
NextToken |
[]byte |
Token de la página siguiente. Si el valor no está vacío, páselo a la próxima consulta. |
|
IsAllSuccess |
bool |
Indica si se consultaron todas las particiones del índice. Si el valor es false, se devuelven resultados parciales y TotalCount podría ser menor que el número real de filas coincidentes. |
|
AggregationResults |
search.AggregationResults |
Resultados de las agregaciones. |
|
GroupByResults |
search.GroupByResults |
Resultados de las agrupaciones. |