Tous les produits
Search
Centre de documentation

OpenSearch:Recherche dans les documents

Dernière mise à jour :Aug 10, 2026

La latence des requêtes augmente avec le nombre de documents récupérés : plus la recherche retourne de résultats, plus elle est longue. Les optimisations ci-dessous réduisent le coût de récupération et résolvent les erreurs de requête courantes. Si les résultats de recherche ne correspondent toujours pas à vos attentes après application de ces conseils, contactez le support technique d'Alibaba Cloud.

Spécifiez toujours un index

Chaque requête doit référencer un index défini dans votre application. Si vous omettez le nom de l'index, le moteur utilise l'index par défaut. En l'absence d'index par défaut, la requête renvoie une erreur sans résultat.

query='mp3'            # Equivalent to query=default:'mp3'
query=default:'mp3'    # Explicit index reference

Entourez les mots-clés de guillemets simples

L'analyseur de requêtes exige que les mots-clés soient entourés de guillemets simples (' '). À défaut, l'analyse de la requête échoue et ne renvoie aucun résultat.

# Error — missing single quotation marks
query=default:mp3

# Correct
query=default:'mp3'

Échappez les apostrophes et les barres obliques inverses

Deux caractères nécessitent un traitement spécial au sein d'une chaîne de mots-clés :

  • Apostrophe (') : échappez-la sous la forme \' ou supprimez-la. Une apostrophe non échappée termine prématurément la chaîne de mots-clés.

  • Barre oblique inverse (\) : échappez-la sous la forme \\. Une barre oblique inverse en fin de mot-clé sert de caractère d'échappement pour le guillemet simple fermant ', ce qui interrompt l'analyse.

# Retrieves documents containing both "Beijing" and "University"
query=default:'Beijing University'

# Error — the apostrophe in "abc's" ends the string prematurely
query=default:'abc's efg'

# Correct — escape the apostrophe
query=default:'abc\'s efg'

# Error — the backslash escapes the closing quote
query=default:'abc\'

Utilisez la clause query pour filtrer les champs indexés

Pour filtrer sur un champ, indexez-le et interrogez-le via la clause query plutôt que via la clause filter. Cette approche améliore les performances des requêtes.

# Slower — filter clause
query=user_id:'123'&&filter=type_id=1

# Faster — both conditions use the query clause on indexed fields
query=user_id:'123' AND type_id:'1'

Utilisez la recherche par plage pour les grands ensembles de données temporels

Si une requête correspond à un grand nombre de documents (par exemple, 50 millions d'enregistrements pour user_id=123) alors que seul un petit sous-ensemble satisfait la condition temporelle (comme 1 000 enregistrements), le moteur peut provoquer un délai d'expiration.

Privilégiez la recherche par plage, plus efficace.

# Slow — may cause timeout when result set is large
query=user_id:'123'&&filter=time>"2016-09-16"

# Fast — range search, more efficient
query=user_id:'123' AND index_timestamp:(1473955200000,)

Réduisez la taille des données de résultat

Une fois les documents correspondants identifiés, le moteur récupère et renvoie leurs données de champ. Le transfert d'un volume important de données de champ par document allonge le temps de réponse.

Deux approches permettent de réduire ce coût :

  • Limitez la taille de l'ensemble de résultats. La pagination affiche par défaut 20 résultats par page ; évitez de récupérer plus de données que nécessaire.

  • Renvoyez uniquement les champs requis. Modifiez le paramètre fetch_fields (ou la configuration des champs d'affichage par défaut) afin d'inclure uniquement les champs réellement utilisés par votre application.