La clause de requête est obligatoire dans toute instruction de recherche. Elle définit les critères en associant une requête à un ou plusieurs champs d'index. Utilisez des opérateurs logiques (AND, OR, ANDNOT, RANK) pour combiner plusieurs conditions et exprimer une logique de recherche complexe.
Exemple rapide : trouvez les documents dont le titre contient « OpenSearch » et qui portent le tag « 1 » :
query=title:'OpenSearch' AND tag:'1'
Syntaxe
{
"query": "<query string>"
}
Le champ query accepte une chaîne associant un nom d'index à une requête de recherche. Les sections ci-dessous décrivent tous les formats de requête pris en charge, depuis les recherches par mot-clé simples jusqu'aux requêtes vectorielles et hybrides.
Opérateurs logiques
Écrivez tous les opérateurs en majuscules. Lorsque plusieurs opérateurs figurent dans la même expression, ils sont évalués selon l'ordre suivant (du niveau de priorité le plus faible au plus élevé) :
RANK < OR < AND < ANDNOT < ()
Utilisez des parenthèses pour modifier la priorité par défaut. Par exemple, default:'A' OR default:'B' AND default:'C' est évalué comme default:'A' OR (default:'B' AND default:'C'). Pour évaluer d'abord A ou B, écrivez (default:'A' OR default:'B') AND default:'C'.
| Opérateur | Documents renvoyés |
|---|---|
AND |
Correspondance aux deux conditions |
OR |
Correspondance à l'une ou l'autre condition |
ANDNOT |
Correspondance à la condition de gauche ; exclusion des documents correspondant à la condition de droite |
RANK |
Correspondance à la condition de gauche ; la condition de droite influence uniquement les scores de pertinence, sans affecter la sélection des documents renvoyés |
() |
Regroupement des conditions pour contrôler l'ordre d'évaluation |
Exemples :
# Documents containing both "Mobile Phone" and "Bluetooth"
query=default:'Mobile Phone' AND default:'Bluetooth'
# Documents containing "Mobile Phone" or "Bluetooth"
query=default:'Mobile Phone' OR default:'Bluetooth'
# Documents containing "Mobile Phone" but not "Bluetooth"
query=default:'Mobile Phone' ANDNOT default:'Bluetooth'
# Documents containing "Mobile Phone", ranked higher if they also mention "Bluetooth"
query=default:'Mobile Phone' RANK default:'Bluetooth'
Requêtes simples
<index name>:'<search query>'^<boost> <operator> <index name>:'<search query>'^<boost>
| Paramètre | Type | Obligatoire | Valeur par défaut | Description |
|---|---|---|---|---|
| Nom de l'index | — | Oui | — | Index à rechercher. L'index doit exister dans le schéma d'index. Le système analyse les valeurs de champ sur lesquelles l'index est construit et renvoie les documents correspondants. |
| Requête de recherche | — | Oui | — | Terme ou phrase à rechercher. |
boost |
INT | Non | 99 | Pondération de pertinence pour cette condition. Valeurs valides : 0–99. Des valeurs plus élevées classent les documents correspondants plus haut par rapport aux autres clauses de requête. |
Requêtes avancées
Plusieurs requêtes de recherche sur le même index
Utilisez | (OR) ou & (AND) pour appliquer plusieurs requêtes de recherche au même index sans répéter le nom de l'index :
<index name>:'<query1>'^boost | '<query2>'^boost
<index name>:'<query1>'^boost & '<query2>'^boost
Requêtes de phrase
Entourez la requête de guillemets doubles pour exiger une correspondance de phrase exacte. Tous les termes doivent apparaître de manière adjacente et dans le même ordre, avant et après l'analyse :
<index name>:"<search query>"^boost
Échappez les guillemets doubles lors de la construction programmatique de la clause de requête.
Requêtes géographiques
Recherchez des documents par localisation spatiale en utilisant le type d'index SPATIAL :
<index name>:'<SHAPE(ARGS...)>'
Formes prises en charge :
| Forme | Syntaxe | Notes |
|---|---|---|
| Point | point(LON LAT) |
Séparez la longitude et la latitude par un espace. |
| Cercle | circle(LON LAT,Rayon) |
Le Rayon est exprimé en mètres. |
| Rectangle | rectangle(minLON minLAT,maxLON maxLAT) |
La valeur maxLAT doit être >= minLAT (correction automatique si cette condition n'est pas respectée). La valeur minLON doit être < maxLON (pas de correction automatique ; des résultats incorrects sont générés si cette condition n'est pas respectée). |
| Polygone | polygon(LON1 LAT1,LON2 LAT2,...) |
Polygones convexes et concaves pris en charge. Le point de départ et le point d'arrivée doivent être identiques. Les côtés adjacents ne doivent pas être colinéaires et les côtés ne doivent pas se croiser. |
Remarques d'utilisation :
L'index doit être de type SPATIAL.
Entourez l'expression de forme de guillemets simples. Exemple :
query=spatial_index:'circle(130.0 10.0,1000.0)'Les coordonnées des points pour les lignes et les polygones sont projetées sur une carte mondiale plane, qu'elles traversent ou non la ligne de longitude 180°.
Les résultats de l'index inversé sur le champ de localisation sont précis. Les résultats sur les champs de ligne et de polygone nécessitent un filtrage post-requête.
Requêtes de plage
Utilisez la notation entre crochets pour interroger des plages numériques ou de dates. Les extrémités ouvertes (( )) sont exclusives ; les extrémités fermées ([ ]) sont inclusives.
Plages numériques : le champ d'index doit être de type numérique. Seuls les entiers sont pris en charge ; les valeurs à virgule flottante ne le sont pas.
<index name>:(<start>,<end>]
| Exemple | Correspondances |
|---|---|
query=price:(3,100) |
prix > 3 et prix < 100 |
query=price:[3,100] |
prix >= 3 et prix <= 100 |
query=price:(3,100] |
prix > 3 et prix <= 100 |
query=price:(,100) |
prix < 100 (sans limite inférieure) |
Plages de dates : le champ d'index doit être de type DATE. Les horodatages doivent être des valeurs INTEGER en millisecondes.
<index name>:(<start_ms>,<end_ms>]
| Limite | Valeur par défaut | Description |
|---|---|---|
| Début | 0 |
Si omise, l'analyse commence à partir de l'horodatage 0. |
| Fin | 4102416000000 |
Représente le 01/01/2100 à 00:00. Si la valeur spécifiée dépasse ce seuil, le système utilise 4102416000000. |
Exemples
Requêtes textuelles
# Title contains "Peking University"
query=title:'Peking University'
# Title contains both "Peking University" and "Zhejiang University"
query=title:'Peking University' AND title:'Zhejiang University'
# Title contains "Peking University" or "Zhejiang University"
query=title:'Peking University' OR title:'Zhejiang University'
# Products launched in October 2024 (timestamps in milliseconds)
query=publish_time:(1727712000000,1730304000000)
Requêtes vectorielles
Tous les exemples vectoriels utilisent le format query=<index vectoriel>:'<données vectorielles>'. Pour récupérer les N premiers résultats, ajoutez &n=<nombre> à l'intérieur de la chaîne de requête.
# Query a 64-dimensional vector index
query=vector:'0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'
# Return the top 10 nearest vectors
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
Requêtes hybrides (texte + vecteur)
Combinez les conditions textuelles et vectorielles avec AND pour filtrer par texte tout en classant par similarité vectorielle :
query=title:'Peking University' AND vector:'0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'