JSON-Operatoren
Milvus unterstützt fortschrittliche Operatoren für die Abfrage und Filterung von JSON-Feldern und eignet sich damit perfekt für die Verwaltung komplexer, strukturierter Daten. Diese Operatoren ermöglichen eine hocheffektive Abfrage von JSON-Dokumenten und erlauben es Ihnen, Entitäten auf der Grundlage bestimmter Elemente, Werte oder Bedingungen innerhalb der JSON-Felder abzurufen. Dieser Abschnitt führt Sie durch die Verwendung von JSON-spezifischen Operatoren in Milvus und bietet praktische Beispiele zur Veranschaulichung ihrer Funktionalität.
JSON-Felder können nicht mit komplexen, verschachtelten Strukturen umgehen und behandeln alle verschachtelten Strukturen als einfache Zeichenketten. Daher ist es bei der Arbeit mit JSON-Feldern ratsam, übermäßig tiefe Verschachtelungen zu vermeiden und sicherzustellen, dass Ihre Datenstrukturen für eine optimale Leistung so flach wie möglich sind.
Verfügbare JSON-Operatoren
Milvus bietet mehrere leistungsstarke JSON-Operatoren, die beim Filtern und Abfragen von JSON-Daten helfen, und diese Operatoren sind
JSON_CONTAINS(identifier, expr)
: Filtert Entitäten, bei denen der angegebene JSON-Ausdruck innerhalb des Feldes gefunden wird.JSON_CONTAINS_ALL(identifier, expr)
: Stellt sicher, dass alle Elemente des angegebenen JSON-Ausdrucks in dem Feld vorhanden sind.JSON_CONTAINS_ANY(identifier, expr)
: Filtert Entitäten, bei denen mindestens ein Element des JSON-Ausdrucks innerhalb des Feldes vorhanden ist.
Wir wollen diese Operatoren anhand von Beispielen untersuchen, um zu sehen, wie sie in realen Szenarien angewendet werden können.
JSON_CONTAINS
Der Operator json_contains
prüft, ob ein bestimmtes Element oder Subarray in einem JSON-Feld vorhanden ist. Er ist nützlich, wenn Sie sicherstellen wollen, dass ein JSON-Array oder -Objekt einen bestimmten Wert enthält.
Beispiel
Stellen Sie sich vor, Sie haben eine Sammlung von Produkten, jedes mit einem tags
Feld, das ein JSON Array von Strings enthält, wie z.B. ["electronics", "sale", "new"]
. Sie möchten Produkte filtern, die das Tag "sale"
haben.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
In diesem Beispiel gibt Milvus alle Produkte zurück, bei denen das Feld tags
das Element "sale"
enthält.
JSON_CONTAINS_ALL
Der Operator json_contains_all
stellt sicher, dass alle Elemente eines angegebenen JSON-Ausdrucks im Zielfeld vorhanden sind. Er ist besonders nützlich, wenn Sie mehrere Werte innerhalb eines JSON-Arrays abgleichen müssen.
Beispiel
Wenn Sie alle Produkte finden möchten, die die Tags "electronics"
, "sale"
und "new"
haben, können Sie den Operator json_contains_all
verwenden.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Diese Abfrage gibt alle Produkte zurück, bei denen das Array tags
alle drei angegebenen Elemente enthält: "electronics"
, "sale"
, und "new"
.
JSON_COTAINS_ANY
Der json_contains_any
Operator filtert Entitäten, bei denen mindestens ein Element des JSON-Ausdrucks innerhalb des Feldes existiert. Dies ist nützlich, wenn Sie Entitäten auf der Grundlage eines beliebigen von mehreren möglichen Werten abgleichen möchten.
Beispiel
Angenommen, Sie möchten Produkte filtern, die mindestens eines der Tags "electronics"
, "sale"
oder "new"
enthalten. Um dies zu erreichen, können Sie den Operator json_contains_any
verwenden.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
In diesem Fall gibt Milvus alle Produkte zurück, die mindestens eines der Tags in der Liste ["electronics", "new", "clearance"]
haben. Auch wenn ein Produkt nur eines dieser Tags hat, wird es in das Ergebnis aufgenommen.