Operatori JSON
Milvus supporta operatori avanzati per interrogare e filtrare i campi JSON, rendendoli perfetti per la gestione di dati complessi e strutturati. Questi operatori consentono di interrogare in modo estremamente efficace i documenti JSON, permettendo di recuperare entità in base a elementi, valori o condizioni specifiche all'interno dei campi JSON. Questa sezione vi guiderà nell'uso degli operatori specifici per JSON in Milvus, fornendo esempi pratici per illustrarne la funzionalità.
I campi JSON non possono gestire strutture complesse e annidate e trattano tutte le strutture annidate come semplici stringhe. Pertanto, quando si lavora con i campi JSON, è consigliabile evitare annidamenti troppo profondi e assicurarsi che le strutture di dati siano il più possibile piatte per ottenere prestazioni ottimali.
Operatori JSON disponibili
Milvus fornisce diversi potenti operatori JSON che aiutano a filtrare e interrogare i dati JSON.
JSON_CONTAINS(identifier, expr)
: Filtra le entità in cui l'espressione JSON specificata si trova all'interno del campo.JSON_CONTAINS_ALL(identifier, expr)
: Assicura che tutti gli elementi dell'espressione JSON specificata siano presenti nel campo.JSON_CONTAINS_ANY(identifier, expr)
: Filtra le entità in cui almeno un membro dell'espressione JSON è presente nel campo.
Esploriamo questi operatori con degli esempi per vedere come possono essere applicati in scenari reali.
JSON_CONTAINS
L'operatore json_contains
verifica l'esistenza di un elemento o di una sotto-riga specifica all'interno di un campo JSON. È utile quando si vuole garantire che un array o un oggetto JSON contenga un particolare valore.
Esempio
Si immagini di avere un insieme di prodotti, ciascuno con un campo tags
che contiene un array JSON di stringhe, come ["electronics", "sale", "new"]
. Si desidera filtrare i prodotti che hanno il tag "sale"
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains(tags, "sale")'
In questo esempio, Milvus restituirà tutti i prodotti in cui il campo tags
contiene l'elemento "sale"
.
JSON_CONTAINS_ALL
L'operatore json_contains_all
assicura che tutti gli elementi di un'espressione JSON specificata siano presenti nel campo di destinazione. È particolarmente utile quando è necessario abbinare più valori all'interno di un array JSON.
Esempio
Continuando con lo scenario dei tag dei prodotti, se si vogliono trovare tutti i prodotti che hanno i tag "electronics"
, "sale"
, e "new"
, si può usare l'operatore json_contains_all
.
# JSON data: {"tags": ["electronics", "sale", "new", "discount"]}
filter = 'json_contains_all(tags, ["electronics", "sale", "new"])'
Questa query restituirà tutti i prodotti in cui l'array tags
contiene i tre elementi specificati: "electronics"
, "sale"
e "new"
.
JSON_COTAINS_ANY
L'operatore json_contains_any
filtra le entità in cui almeno un membro dell'espressione JSON esiste all'interno del campo. È utile quando si desidera abbinare le entità in base a uno qualsiasi dei valori possibili.
Esempio
Supponiamo di voler filtrare i prodotti che hanno almeno uno dei tag "electronics"
, "sale"
, o "new"
. Per ottenere questo risultato, è possibile utilizzare l'operatore json_contains_any
.
# JSON data: {"tags": ["electronics", "sale", "new"]}
filter = 'json_contains_any(tags, ["electronics", "new", "clearance"])'
In questo caso, Milvus restituirà tutti i prodotti che hanno almeno uno dei tag dell'elenco ["electronics", "new", "clearance"]
. Anche se un prodotto ha solo uno di questi tag, sarà incluso nel risultato.