Al consultar un índice de búsqueda con el Tablestore SDK for Java, puede colapsar los resultados por un campo específico para que solo se devuelva una fila por cada valor distinto del campo.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente.
Funcionamiento
El colapso de campos agrupa las filas coincidentes según el valor de un campo específico del índice de búsqueda y devuelve una fila representativa de cada grupo. El orden de clasificación efectivo determina la fila que se devuelve de cada grupo. Puede usar sorting and pagination para configurar el orden de clasificación. El colapso de campos solo modifica la forma en que se muestran los resultados de la consulta y no altera los datos de la tabla.
La clasificación y la agregación deben estar habilitadas para el campo de colapso. El campo debe ser de tipo Keyword, Long o Double, y no puede ser un arreglo.
Una consulta con colapso solo admite paginación basada en límite y desplazamiento. No se admite la paginación basada en token. La suma de
limityoffsetno puede exceder100000.Las agregaciones y las agrupaciones operan sobre los resultados coincidentes antes del colapso. El recuento total de filas también corresponde al número de filas coincidentes previas al colapso. No es posible obtener el número total de grupos después del colapso.
Llame a search para consultar datos y configure SearchQuery.collapse para especificar el campo de colapso.
SearchResponse search(SearchRequest request)
En el siguiente ejemplo se consultan todas las filas, se colapsan los resultados por el campo category y se ordenan las filas por el campo price en orden descendente. Se devuelve la fila con el precio más alto de cada categoría.
SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(new MatchAllQuery());
searchQuery.setLimit(10);
searchQuery.setCollapse(new Collapse("category"));
searchQuery.setSort(new Sort(
Arrays.asList(new FieldSort("price", SortOrder.DESC))));
SearchRequest.ColumnsToGet columnsToGet =
new SearchRequest.ColumnsToGet();
columnsToGet.setColumns(Arrays.asList("category", "price"));
SearchRequest request =
new SearchRequest("example_table", "example_index", searchQuery);
request.setColumnsToGet(columnsToGet);
SearchResponse response = client.search(request);
System.out.println(response.getRows());
Parámetros
Solicitud de consulta
El tipo de request es SearchRequest. En la siguiente tabla se describen sus 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) |
SearchQuery |
Condición de consulta y configuración de colapso. |
|
columnsToGet (opcional) |
SearchRequest.ColumnsToGet |
Columnas que se devolverán. Si no se configura este parámetro, solo se devuelven las columnas de clave principal. |
|
timeoutInMillisecond (opcional) |
int |
Tiempo de espera de la consulta a nivel de solicitud, en milisegundos. Valor predeterminado: |
|
routingValues (opcional) |
|
Valores de clave principal de los campos de enrutamiento personalizados. No es necesario configurar este parámetro si no se utiliza enrutamiento personalizado. |
Configuración de consulta
El tipo de request.searchQuery es SearchQuery. En la siguiente tabla se describen sus parámetros.
|
Nombre |
Tipo |
Descripción |
|
query (obligatorio) |
Query |
Condición de consulta. Se admiten los tipos de consulta de índice de búsqueda. |
|
collapse (obligatorio) |
Collapse |
Configuración de colapso. |
|
offset (opcional) |
Integer |
Posición del grupo desde la cual comienza la consulta actual. Valor predeterminado: |
|
limit (opcional) |
Integer |
Número máximo de grupos que se devolverán. Valor predeterminado: |
|
highlight (opcional) |
Highlight |
Configuración de resumen y resaltado. La devolución de resultados resaltados depende del tipo de consulta y de la configuración de campos del índice. |
|
sort (opcional) |
Sort |
Orden de clasificación de los resultados, que determina la fila representativa devuelta de cada grupo y el orden de los grupos. Si no se configura este parámetro, se utiliza la clasificación del índice. |
|
trackTotalCount (opcional) |
int |
Número máximo esperado de filas coincidentes que se contarán. Valor predeterminado: |
|
filter (opcional) |
SearchFilter |
Filtro aplicado a los resultados de |
|
aggregationList (opcional) |
|
Configuraciones de agregación. Las agregaciones operan sobre los resultados coincidentes antes del colapso. |
|
groupByList (opcional) |
|
Configuraciones de agrupación. Las agrupaciones operan sobre los resultados coincidentes antes del colapso. |
|
token (opcional) |
byte[] |
Token de paginación. No configure este parámetro cuando utilice colapso de campos. |
Configuración de colapso
El tipo de request.searchQuery.collapse es Collapse. En la siguiente tabla se describe su parámetro.
|
Nombre |
Tipo |
Descripción |
|
fieldName (obligatorio) |
String |
Nombre del campo de colapso. La clasificación y la agregación deben estar habilitadas para el campo, y este debe ser de tipo Keyword, Long o Double, sin ser un arreglo. |
Columnas a devolver
El tipo de request.columnsToGet es SearchRequest.ColumnsToGet. En la siguiente tabla se describen sus parámetros.
|
Nombre |
Tipo |
Descripción |
|
columns (opcional) |
|
Nombres de las columnas de atributo que se devolverán. Configure este parámetro solo si tanto |
|
returnAll (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributo de la tabla de datos. Valor predeterminado: |
|
returnAllFromIndex (opcional) |
boolean |
Especifica si se deben devolver todas las columnas de atributo almacenadas en el índice de búsqueda. Valor predeterminado: |
Respuesta
El método search devuelve SearchResponse. En la siguiente tabla se describen los campos relacionados con el colapso de campos.
|
Nombre |
Tipo |
Descripción |
|
totalCount |
long |
Número de filas coincidentes antes del colapso. Llame a |
|
rows |
|
Filas resultantes después del colapso. Llame a |
|
searchHits |
|
Coincidencias de búsqueda después del colapso. Llame a |
|
isAllSuccess |
boolean |
Indica si se consultaron todas las particiones del índice. Llame a |
|
aggregationResults |
AggregationResults |
Resultados de agregación calculados a partir de las filas coincidentes antes del colapso. Llame a |
|
groupByResults |
GroupByResults |
Resultados de agrupación calculados a partir de las filas coincidentes antes del colapso. Llame a |