Todos los productos
Search
Centro de documentos

Tablestore:Exists query

Última actualización: Sep 03, 2026

Una consulta Exists con el Tablestore SDK for Java filtra los datos según si un campo especificado existe o no.

Requisitos previos

Instale Tablestore SDK for Java e inicialice un cliente.

Descripción de la función

Una consulta Exists (ExistsQuery, también conocida como consulta NULL o consulta de valor nulo) coincide con las filas en las que existe un campo indexado especificado. Un campo no existe si la columna correspondiente no se escribió en la tabla de datos. Una matriz vacía también se considera como un campo de matriz inexistente.

Al llamar a search, establezca el tipo de consulta en ExistsQuery y especifique un nombre de campo. Para consultar un campo principal Nested o un subcampo, envuelva ExistsQuery dentro de una NestedQuery. Para coincidir con filas en las que un campo no existe, agregue ExistsQuery a BoolQuery.mustNotQueries.

SearchResponse search(SearchRequest request)

El siguiente ejemplo consulta las filas en las que existe el campo city. La consulta devuelve hasta 10 filas y el número total de coincidencias.

String tableName = "example_table";
String indexName = "example_index";

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(existsQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

Parámetros

Solicitud de búsqueda

request es un objeto SearchRequest que 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)

SearchQuery

La condición de consulta y la configuración general de la consulta.

columnsToGet (opcional)

SearchRequest.ColumnsToGet

Las columnas que se devolverán. Si este parámetro no se configura, solo se devuelven las columnas de clave principal.

timeoutInMillisecond (opcional)

int

El tiempo de espera de la consulta a nivel de solicitud, en milisegundos. El valor predeterminado es -1, lo que indica que no se configura un tiempo de espera de consulta por separado.

routingValues (opcional)

List<PrimaryKey>

Los valores de clave principal que corresponden a campos de enrutamiento personalizados. Deje este parámetro sin establecer si no se ha configurado el enrutamiento personalizado.

Configuración de la consulta

request.searchQuery es un objeto SearchQuery que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

query (obligatorio)

Query

La condición de consulta. Establezca este parámetro en un objeto ExistsQuery para realizar una consulta Exists.

offset (opcional)

Integer

La posición inicial de la consulta.

limit (opcional)

Integer

El número máximo de filas que se devolverán. Establezca este parámetro en 0 para no devolver ninguna fila.

collapse (opcional)

Collapse

La configuración de colapso de campos, que deduplica los resultados por un campo especificado. Para obtener detalles sobre la configuración, consulte Collapse query results.

sort (opcional)

Sort

El orden de clasificación de los resultados. Para obtener detalles sobre la configuración, consulte Sort and paginate results.

trackTotalCount (opcional)

int

El número máximo esperado de filas coincidentes que se contarán. El valor predeterminado es TRACK_TOTAL_COUNT_DISABLED, que deshabilita el conteo. Establezca este parámetro en TRACK_TOTAL_COUNT para contar todas las filas coincidentes. Un valor menor mejora el rendimiento de la consulta.

filter (opcional)

SearchFilter

Un filtro que se aplica a los resultados de query.

aggregationList (opcional)

List<Aggregation>

La configuración de agregación. Para obtener detalles sobre la configuración, consulte Aggregation.

groupByList (opcional)

List<GroupBy>

La configuración de agrupación. Para obtener detalles sobre la configuración, consulte Aggregation.

token (opcional)

byte[]

El token de paginación. Establezca este parámetro en el valor nextToken de la respuesta anterior para continuar leyendo filas. Cuando establece token, el SDK borra sort porque el token ya contiene las condiciones de ordenamiento.

Condición de consulta

request.searchQuery.query es un objeto ExistsQuery que contiene el siguiente parámetro.

Nombre

Tipo

Descripción

fieldName (obligatorio)

String

El nombre del campo indexado que se va a consultar.

Columnas devueltas

request.columnsToGet es un objeto SearchRequest.ColumnsToGet que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

columns (opcional)

List<String>

Las columnas de atributos que se devolverán. Establezca este parámetro solo si tanto returnAll como returnAllFromIndex son false. Si omite este parámetro, solo se devuelven las columnas de clave principal.

returnAll (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributos de la tabla de datos. El valor predeterminado es false.

returnAllFromIndex (opcional)

boolean

Especifica si se deben devolver todas las columnas de atributos indexados. El valor predeterminado es false. No establezca returnAll y returnAllFromIndex en true simultáneamente.

Valores de retorno

search devuelve un objeto SearchResponse. La siguiente tabla describe los campos principales.

Nombre

Tipo

Descripción

totalCount

long

El número de filas coincidentes. Llame a getTotalCount() para obtener el valor. El valor devuelto depende de la configuración de trackTotalCount.

rows

List<Row>

Las filas devueltas por esta consulta. Llame a getRows() para obtener el valor. El número de filas no supera limit.

searchHits

List<SearchHit>

Las coincidencias de la consulta. Llame a getSearchHits() para obtener el valor.

nextToken

byte[]

El token de la página siguiente. Llame a getNextToken() para obtener el valor. Si el valor no es null, establézcalo como token en la siguiente solicitud para continuar leyendo filas.

isAllSuccess

boolean

Indica si todas las particiones del índice se consultaron correctamente. Llame a isAllSuccess() para obtener el valor. Si el valor es false, la respuesta contiene resultados parciales y totalCount podría ser menor que el número real de filas coincidentes.

Ejemplos de escenarios

Consultar filas en las que un campo no existe

Agregue ExistsQuery a BoolQuery.mustNotQueries para coincidir con las filas en las que el campo city no existe.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("city");

BoolQuery boolQuery = new BoolQuery();
boolQuery.setMustNotQueries(Collections.singletonList(existsQuery));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(boolQuery);

Consultar un campo Nested

Envuelva ExistsQuery dentro de una NestedQuery. Para consultar el campo principal, establezca fieldName en items. Para consultar un subcampo, especifique la ruta completa, como items.keyword. El siguiente ejemplo consulta las filas en las que existe el subcampo items.keyword.

ExistsQuery existsQuery = new ExistsQuery();
existsQuery.setFieldName("items.keyword");

NestedQuery nestedQuery = new NestedQuery();
nestedQuery.setPath("items");
nestedQuery.setQuery(existsQuery);
nestedQuery.setScoreMode(ScoreMode.None);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(nestedQuery);