Opérateurs JSON
Milvus prend en charge des opérateurs avancés pour l'interrogation et le filtrage des champs JSON, ce qui les rend parfaits pour la gestion de données complexes et structurées. Ces opérateurs permettent d'effectuer des requêtes très efficaces dans les documents JSON, ce qui permet d'extraire des entités en fonction d'éléments, de valeurs ou de conditions spécifiques dans les champs JSON. Cette section vous guidera dans l'utilisation des opérateurs spécifiques à JSON dans Milvus, en fournissant des exemples pratiques pour illustrer leur fonctionnalité.
Les champs JSON ne peuvent pas traiter les structures complexes imbriquées et traitent toutes les structures imbriquées comme des chaînes simples. Par conséquent, lorsque vous travaillez avec des champs JSON, il est conseillé d'éviter une imbrication trop profonde et de veiller à ce que vos structures de données soient aussi plates que possible pour des performances optimales.
Opérateurs JSON disponibles
Milvus fournit plusieurs opérateurs JSON puissants qui permettent de filtrer et d'interroger les données JSON.
JSON_CONTAINS(identifier, expr)
: Filtre les entités où l'expression JSON spécifiée se trouve dans le champ.JSON_CONTAINS_ALL(identifier, expr)
: Assure que tous les éléments de l'expression JSON spécifiée sont présents dans le champ.JSON_CONTAINS_ANY(identifier, expr)
: Filtre les entités dont au moins un membre de l'expression JSON est présent dans le champ.
Explorons ces opérateurs à l'aide d'exemples pour voir comment ils peuvent être appliqués dans des scénarios réels.
JSON_CONTAINS
L'opérateur json_contains
vérifie si un élément ou un sous-réseau spécifique existe dans un champ JSON. Il est utile lorsque vous voulez vous assurer qu'un tableau ou un objet JSON contient une valeur particulière.
Exemple
Imaginez que vous ayez une collection de produits, chacun avec un champ tags
qui contient un tableau JSON de chaînes de caractères, comme ["electronics", "sale", "new"]
. Vous souhaitez filtrer les produits qui ont la balise "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
Dans cet exemple, Milvus renvoie tous les produits dont le champ tags
contient l'élément "sale"
.
JSON_CONTAINS_ALL
L'opérateur json_contains_all
garantit que tous les éléments d'une expression JSON spécifiée sont présents dans le champ cible. Il est particulièrement utile lorsque vous devez faire correspondre plusieurs valeurs dans un tableau JSON.
Exemple
Si vous voulez trouver tous les produits qui ont les étiquettes "electronics"
, "sale"
, et "new"
, vous pouvez utiliser l'opérateur json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Cette requête renverra tous les produits dont le tableau tags
contient les trois éléments spécifiés : "electronics"
, "sale"
, et "new"
.
JSON_COTAINS_ANY
L'opérateur json_contains_any
filtre les entités dont au moins un membre de l'expression JSON existe dans le champ. Cet opérateur est utile lorsque vous souhaitez faire correspondre des entités sur la base de l'une des valeurs possibles.
Exemple
Supposons que vous souhaitiez filtrer les produits qui ont au moins une des balises "electronics"
, "sale"
, ou "new"
. Vous pouvez utiliser l'opérateur json_contains_any
pour y parvenir.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
Dans ce cas, Milvus renverra tous les produits qui ont au moins une des balises de la liste ["electronics", "new", "clearance"]
. Même si un produit n'a qu'une seule de ces balises, il sera inclus dans le résultat.