Tous les produits
Search
Centre de documentation

Tablestore:Requête de plage

Dernière mise à jour :Aug 20, 2026

Une requête de plage sur un index de recherche avec le SDK Tablestore pour Java filtre les données selon des bornes inférieures et supérieures de valeurs de champ, et permet d'inclure ou d'exclure chaque borne.

Prérequis

Installez le SDK Tablestore pour Java et initialisez un client.

Description de la fonctionnalité

Une requête de plage sélectionne les lignes dont les valeurs de champ indexées se situent dans un intervalle spécifié. Vous pouvez définir uniquement une borne inférieure, uniquement une borne supérieure, ou les deux. Au moins une borne est requise. Pour un champ Text, une ligne correspond si l'un des jetons générés à partir de la valeur du champ se situe dans l'intervalle.

Utilisez greaterThan, greaterThanOrEqual, lessThan et lessThanOrEqual pour spécifier respectivement les conditions strictement supérieur, supérieur ou égal, strictement inférieur et inférieur ou égal. Définissez le type de requête sur RangeQuery lors de l'appel à search.

SearchResponse search(SearchRequest request)

L'exemple suivant interroge les valeurs Long du champ price qui se situent dans l'intervalle semi-ouvert [100, 500). La requête renvoie au maximum 10 lignes ainsi que le nombre total de correspondances.

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

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("price");
rangeQuery.greaterThanOrEqual(ColumnValue.fromLong(100L));
rangeQuery.lessThan(ColumnValue.fromLong(500L));

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(rangeQuery);
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());

Paramètres

Requête de recherche

request est un objet SearchRequest qui contient les paramètres suivants.

Nom

Type

Description

tableName (obligatoire)

String

Le nom de la table de données.

indexName (obligatoire)

String

Le nom de l'index de recherche.

searchQuery (obligatoire)

SearchQuery

La condition de requête et les paramètres généraux de la requête.

columnsToGet (facultatif)

SearchRequest.ColumnsToGet

Les colonnes à renvoyer. Si ce paramètre n'est pas configuré, seules les colonnes de clé primaire sont renvoyées.

timeoutInMillisecond (facultatif)

int

Le délai d'expiration de la requête au niveau de la demande, en millisecondes. La valeur par défaut est -1, ce qui signifie qu'aucun délai d'expiration distinct n'est configuré pour la requête.

routingValues (facultatif)

List<PrimaryKey>

Les valeurs de clé primaire correspondant aux champs de routage personnalisés. Laissez ce paramètre non défini si le routage personnalisé n'est pas configuré.

Paramètres de la requête

request.searchQuery est un objet SearchQuery qui contient les paramètres suivants.

Nom

Type

Description

query (obligatoire)

Query

La condition de requête. Définissez ce paramètre sur un objet RangeQuery pour une requête de plage.

offset (facultatif)

Integer

La position de départ de la requête.

limit (facultatif)

Integer

Le nombre maximal de lignes à renvoyer. Définissez ce paramètre sur 0 pour ne renvoyer aucune ligne.

highlight (facultatif)

Highlight

Les paramètres de résumé et de mise en surbrillance pour les champs Text. Pour plus de détails sur la configuration, consultez la rubrique Résumé et mise en surbrillance.

collapse (facultatif)

Collapse

Les paramètres de regroupement, qui permettent de dédupliquer les résultats selon un champ spécifié. Pour plus de détails sur la configuration, consultez la rubrique Regrouper les résultats de requête.

sort (facultatif)

Sort

L'ordre de tri des résultats. Pour plus de détails sur la configuration, consultez la rubrique Trier et paginer les résultats.

trackTotalCount (facultatif)

int

Le nombre maximal attendu de lignes correspondantes à compter. La valeur par défaut est TRACK_TOTAL_COUNT_DISABLED, ce qui désactive le comptage. Définissez ce paramètre sur TRACK_TOTAL_COUNT pour compter toutes les lignes correspondantes. Une valeur plus faible améliore les performances de la requête.

filter (facultatif)

SearchFilter

Un filtre appliqué aux résultats de query.

aggregationList (facultatif)

List<Aggregation>

Les paramètres d'agrégation. Pour plus de détails sur la configuration, consultez la rubrique Agrégation.

groupByList (facultatif)

List<GroupBy>

Les paramètres de regroupement. Pour plus de détails sur la configuration, consultez la rubrique Agrégation.

token (facultatif)

byte[]

Le jeton de pagination. Définissez ce paramètre sur la valeur nextToken de la réponse précédente pour continuer à lire les lignes. Lorsque vous définissez token, le SDK efface sort car le jeton contient déjà les conditions de tri.

Condition de requête

request.searchQuery.query est un objet RangeQuery qui contient les paramètres suivants.

Nom

Type

Description

fieldName (obligatoire)

String

Le nom du champ indexé à interroger. Les requêtes de plage prennent en charge les champs Long, Double, Boolean, Keyword, Text, Date et IP, ainsi que les sous-champs des champs JSON Object. Pour un champ Text, une ligne correspond si l'un des jetons se situe dans l'intervalle.

from (facultatif)

ColumnValue

La borne inférieure. Au moins l'un des paramètres from et to est requis. Appelez greaterThan ou greaterThanOrEqual pour définir la borne inférieure et indiquer si elle doit être incluse.

to (facultatif)

ColumnValue

La borne supérieure. Au moins l'un des paramètres from et to est requis. Appelez lessThan ou lessThanOrEqual pour définir la borne supérieure et indiquer si elle doit être incluse.

includeLower (facultatif)

boolean

Indique s'il faut inclure from. La valeur par défaut est false. greaterThan définit ce paramètre sur false, tandis que greaterThanOrEqual le définit sur true.

includeUpper (facultatif)

boolean

Indique s'il faut inclure to. La valeur par défaut est false. lessThan définit ce paramètre sur false, tandis que lessThanOrEqual le définit sur true.

Colonnes renvoyées

request.columnsToGet est un objet SearchRequest.ColumnsToGet qui contient les paramètres suivants.

Nom

Type

Description

columns (facultatif)

List<String>

Les colonnes d'attribut à renvoyer. Définissez ce paramètre uniquement si returnAll et returnAllFromIndex sont tous deux définis sur false. Si vous omettez ce paramètre, seules les colonnes de clé primaire sont renvoyées.

returnAll (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut de la table de données. La valeur par défaut est false.

returnAllFromIndex (facultatif)

boolean

Indique s'il faut renvoyer toutes les colonnes d'attribut indexées. La valeur par défaut est false. Ne définissez pas returnAll et returnAllFromIndex simultanément sur true.

Valeurs de retour

search renvoie un objet SearchResponse. Le tableau suivant décrit les champs principaux.

Nom

Type

Description

totalCount

long

Le nombre de lignes correspondantes. Appelez getTotalCount() pour obtenir la valeur. La valeur renvoyée dépend du paramètre trackTotalCount.

rows

List<Row>

Les lignes renvoyées par cette requête. Appelez getRows() pour obtenir la valeur. Le nombre de lignes ne dépasse pas limit.

searchHits

List<SearchHit>

Les résultats de la requête. Appelez getSearchHits() pour obtenir la valeur. Si highlight est configuré, ce champ contient les données de ligne ainsi que les résultats de résumé et de mise en surbrillance.

nextToken

byte[]

Le jeton de la page suivante. Appelez getNextToken() pour obtenir la valeur. Si la valeur n'est pas null, définissez-la comme token dans la requête suivante pour continuer à lire les lignes.

isAllSuccess

boolean

Indique si toutes les partitions d'index ont été interrogées avec succès. Appelez isAllSuccess() pour obtenir la valeur. Si la valeur est false, la réponse contient des résultats partiels et totalCount peut être inférieur au nombre réel de lignes correspondantes.

Exemples de scénarios

Interroger des dates dans un format personnalisé

Si date_string est un champ String dans la table de données et qu'il est mappé à un champ Date dans l'index de recherche avec le format yyyy-MM-dd HH:mm:ss, utilisez des chaînes au même format comme bornes de requête. L'exemple suivant interroge l'intervalle [2021-01-01 00:00:00, 2023-01-01 00:00:00).

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("date_string");
rangeQuery.greaterThanOrEqual(ColumnValue.fromString("2021-01-01 00:00:00"));
rangeQuery.lessThan(ColumnValue.fromString("2023-01-01 00:00:00"));

Interroger des horodatages en secondes epoch

Si date_epoch est un champ Integer dans la table de données et qu'il est mappé à un champ Date dans l'index de recherche avec le format epoch_second, utilisez des horodatages en secondes epoch comme bornes de requête. L'exemple suivant interroge les valeurs supérieures à 1609459200.

RangeQuery rangeQuery = new RangeQuery();
rangeQuery.setFieldName("date_epoch");
rangeQuery.greaterThan(ColumnValue.fromLong(1609459200L));