Tous les produits
Search
Centre de documentation

OpenSearch:Cache clause

Dernière mise à jour :Aug 22, 2026

La clause de cache active la fonctionnalité Searcher Cache, qui met en cache les résultats des requêtes après le tri détaillé ou la dispersion des documents. Les requêtes identiques ultérieures ignorent entièrement le tri approximatif et le tri détaillé, ce qui améliore les performances des requêtes au niveau du nœud de travail Searcher.

La clause de cache est facultative. Ajoutez-la à une instruction de requête pour contrôler le comportement de mise en cache par requête.

Important

Le composant Searcher Cache met en cache les résultats après le tri détaillé. Pour garantir qu'un nombre suffisant de résultats soit mis en cache, spécifiez le paramètre rank_size dans le scoreur de reclassement ou le paramètre rerank_size dans une clause de configuration. Si trop peu de résultats passent le tri détaillé, le cache risque de ne pas contenir suffisamment de documents pour satisfaire les requêtes futures.

Syntaxe

{
  "cache": {
    "enabled": true,
    "cache_key": 1234567890,
    "expire_time": "now()+300",
    "current_time": 1235,
    "cache_filter": "a > 10",
    "cache_doc_num_limit": [200, 3000],
    "refresh_attributes": ["price", "sell_count"]
  }
}

Paramètres

Paramètre Type Valeur par défaut Obligatoire Description
enabled Booléen — Non Indique s'il faut activer le Searcher Cache. Valeurs valides : true, false.
cache_key Entier Hachage de l'instruction de requête Non Clé de cache pour la requête. Une clé de cache stable améliore le taux de succès du cache. Si omis, le système calcule un hachage de l'instruction de requête et l'utilise comme clé.
expire_time Expression (UINT32) N'expire jamais Non Durée de conservation du cache en secondes. Accepte une expression d'attribut, une expression de fonction, une expression d'attribut virtuel ou une expression arithmétique combinant ces types. La valeur de retour doit être de type UINT32 ; si la valeur renvoyée n'est pas de type UINT32, le système signale une erreur. Avant la mise en cache, le système évalue cette expression pour chaque document et utilise la valeur minimale comme durée de conservation pour tous les éléments mis en cache. Omettez ce paramètre si vos données ne nécessitent pas de mises à jour incrémentielles ni de gestion de la fraîcheur des informations.
current_time Entier Heure système actuelle Non Horodatage de référence pour les vérifications d'expiration. S'il est défini, le composant Searcher Cache compare expire_time à cette valeur pour déterminer si un élément mis en cache a expiré. Si omis, l'heure système actuelle est utilisée.
cache_filter Expression — Non Conditions de filtre appliquées aux éléments mis en cache. Utilise la même syntaxe que les expressions de filtre standard.
cache_doc_num_limit Tableau d'entiers [200, 3000] Non Nombre maximal de documents à mettre en cache. Spécifiez ce paramètre dans chaque instruction de requête pour maintenir un taux de succès du cache cohérent. Prend en charge des limites par paliers.
refresh_attributes Tableau de chaînes — Non Champs d'attribut dont les valeurs sont actualisées depuis l'index lorsque le cache est atteint. Seuls les champs d'attribut définis dans le schéma sont pris en charge ; les champs d'attribut issus d'une clause virtual_attribute ne sont pas pris en charge. Utilisez ce paramètre lorsque la durée de conservation du cache est longue et que certaines valeurs d'attribut changent fréquemment.

Fonctionnement des limites par paliers de cache_doc_num_limit

Le nombre de documents mis en cache dépend de la valeur required_topK pour la requête. La valeur required_topK est calculée comme suit :

  • Nœud de travail Searcher unique : required_topK = start + hit

  • Plusieurs nœuds de travail Searcher : required_topK = min(start + hit, searcher_return_hits), où searcher_return_hits est défini par le nœud de travail Query Result Searcher (QRS)

Avec cache_doc_num_limit défini sur [280, 780], le cache applique les politiques suivantes :

**required_topK** Documents mis en cache
≤ 280 280
281–780 780
> 780 Égal à required_topK

La spécification de plusieurs paliers permet au cache de servir des requêtes avec différentes exigences topK à partir du même ensemble de résultats mis en cache, augmentant ainsi le taux de succès du cache.

Exemple

{
  "cache": {
    "enabled": true,
    "cache_key": 1234567890,
    "expire_time": "now()+300",
    "current_time": 1235,
    "cache_filter": "a > 10",
    "cache_doc_num_limit": [200, 3000],
    "refresh_attributes": ["price", "sell_count"]
  }
}

Notes d'utilisation

  • La clause de cache est facultative. Omettez-la si la mise en cache n'est pas requise pour une requête.

  • Par défaut, les éléments mis en cache n'expirent jamais. Le composant Searcher Cache supprime les éléments selon l'algorithme du moins récemment utilisé (LRU) lorsque la capacité du cache est atteinte.

  • Définissez expire_time uniquement lorsque vos données exigent une gestion de la fraîcheur des informations. Pour les ensembles de données statiques ou ceux sans mises à jour incrémentielles, la valeur par défaut (aucune expiration) suffit.

  • Pour maintenir les valeurs des attributs mis en cache à jour lorsque la durée de conservation du cache est longue, utilisez refresh_attributes pour spécifier les champs à actualiser à chaque accès au cache.

  • Spécifiez cache_doc_num_limit dans chaque instruction de requête. Des limites incohérentes entre les requêtes réduisent le taux de succès du cache.