Tous les produits
Search
Centre de documentation

OpenSearch:Clause de filtrage

Dernière mise à jour :Aug 20, 2026

Présentation

Une clause filter filtre les documents selon des conditions spécifiques. Une fois qu'une clause query a récupéré un ensemble de documents, la clause filter affine les résultats. Cette clause est facultative.

Syntaxe

{
  "filter": ""
}

La clause filter est facultative. Sa valeur est une chaîne expression composée d'une ou plusieurs conditions de filtrage, par exemple a > 10 AND b < 100. Pour plus d'informations, consultez la rubrique Syntaxe des expressions.

Syntaxe des expressions

Filtrage simple

left_operand relational_operator right_operand

Opérande gauche : Un attribute field ou une constant (numérique ou chaîne).

Opérateur relationnel : Les opérateurs pris en charge sont >, <, =, <=, >= et !=.

Opérande droit : Un attribute field ou une constant (numérique ou chaîne).

Exemples :

price > 100: Returns documents where `price` is greater than 100.
ids = 1: `ids` is a `multi-value field`. Returns documents where the `ids` field contains the value 1.
province != "Zhejiang": Returns documents where `province` is not "Zhejiang".

Combinaison de plusieurs conditions

condition logical_operator condition

Condition : Une expression relationnelle complète, telle que price > 100.

Opérateur logique : AND ou OR. L'opérateur AND exige que les deux conditions soient vraies, tandis que OR exige qu'au moins une condition soit vraie. Utilisez des parenthèses () pour regrouper les conditions ; celles-ci ont la priorité la plus élevée.

Exemples :

price > 100 AND categoryId = 10: Returns documents where `categoryId` is 10 and `price` is greater than 100.
categoryId = 100 OR categoryId = 10: Returns documents where `categoryId` is either 100 or 10.
(categoryId = 100 OR categoryId = 10) AND price > 100: Returns documents where `categoryId` is 100 or 10, and `price` is greater than 100.

Opérations arithmétiques dans les filtres

left_operand arithmetic_operator right_operand relational_operator condition_value

Opérande gauche : Un attribute field ou une constant (numérique ou chaîne).

Opérateur arithmétique : Les opérateurs pris en charge sont +, -, * et /.

Opérande droit : Un attribute field ou une constant (numérique ou chaîne).

Valeur de condition : Un attribute field ou une constant.

Exemples :

price * 0.5 > 100: Returns documents where `price` multiplied by 0.5 is greater than 100.
price - cost > 100: Returns documents where `price` minus `cost` is greater than 100.
(price * 0.5 > 100) AND categoryId = 10: Returns documents where `price` multiplied by 0.5 is greater than 100 and `categoryId` is 10.

Fonctions dans les filtres

function relational_operator right_operand

Les filtres prennent en charge les fonctions, telles que les fonctions intégrées in ou notin. Pour plus d'informations, consultez la rubrique sur les fonctions intégrées. Si une fonction renvoie une valeur booléenne, l'relational operator n'est pas requis. Une function peut également servir d'opérande droit dans une expression relationnelle.

Exemple :

in(id,"1|2|3"): Returns documents where `id` is 1, 2, or 3.

Notes d'utilisation

  • Configurez les champs utilisés dans une clause filter en tant que attribute fields dans le schéma.

  • En raison des problèmes de précision des nombres à virgule flottante, évitez d'utiliser l'opérateur d'égalité (=) pour les comparaisons exactes sur les champs float et double. Ces comparaisons ne sont pas fiables. Privilégiez les comparaisons de plage avec > et <.

  • Entourez les valeurs de champ string de guillemets doubles ("").

  • Les champs String ne prennent en charge que les opérateurs d'égalité (=) et d'inégalité (!=). Ils ne prennent pas en charge d'autres opérateurs relationnels comme > ou <, ni les opérations arithmétiques.

  • Lorsque vous utilisez l'opérateur = avec un multi-value field, l'expression est évaluée à vrai si le champ contient la valeur spécifiée. Inversement, != est évalué à vrai si le champ ne contient pas la valeur.

  • Échappez tous les guillemets doubles (") qui font partie d'une valeur de chaîne dans l'expression.