Hole & Skalare Abfrage
Diese Anleitung zeigt, wie man Entitäten nach ID abruft und eine skalare Filterung durchführt. Eine skalare Filterung ruft Entitäten ab, die den angegebenen Filterungsbedingungen entsprechen.
Übersicht
Eine skalare Abfrage filtert Entitäten in einer Sammlung auf der Grundlage einer definierten Bedingung mit booleschen Ausdrücken. Das Abfrageergebnis ist eine Menge von Entitäten, die die definierte Bedingung erfüllen. Im Gegensatz zu einer Vektorsuche, die den nächstgelegenen Vektor zu einem gegebenen Vektor in einer Sammlung identifiziert, filtern Abfragen Entitäten auf der Grundlage bestimmter Kriterien.
In Milvus ist ein Filter immer eine Zeichenkette, die aus Feldnamen besteht, die durch Operatoren verbunden sind. In dieser Anleitung finden Sie verschiedene Filterbeispiele. Um mehr über die Details der Operatoren zu erfahren, gehen Sie zum Abschnitt Referenz.
Vorbereitungen
In den folgenden Schritten wird der Code zum Herstellen einer Verbindung zu Milvus, zum schnellen Einrichten einer Sammlung und zum Einfügen von über 1.000 zufällig generierten Entitäten in die Sammlung wiederholt.
Schritt 1: Erstellen einer Sammlung
Verwenden Sie MilvusClient
um sich mit dem Milvus-Server zu verbinden und create_collection()
um eine Sammlung zu erstellen.
Verwenden Sie MilvusClientV2
um sich mit dem Milvus-Server zu verbinden und createCollection()
um eine Sammlung zu erstellen.
Verwenden Sie MilvusClient
um eine Verbindung zum Milvus-Server herzustellen und createCollection()
um eine Sammlung zu erstellen.
from pymilvus import MilvusClient
# 1. Set up a Milvus client
client = MilvusClient(
uri="http://localhost:19530"
)
# 2. Create a collection
client.create_collection(
collection_name="quick_setup",
dimension=5,
)
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import io.milvus.v2.client.MilvusClientV2;
import io.milvus.v2.client.ConnectConfig;
import io.milvus.v2.common.ConsistencyLevel;
import io.milvus.v2.service.collection.request.CreateCollectionReq;
import io.milvus.v2.service.collection.request.DropCollectionReq;
import io.milvus.v2.service.partition.request.CreatePartitionReq;
import io.milvus.v2.service.vector.request.GetReq;
import io.milvus.v2.service.vector.request.InsertReq;
import io.milvus.v2.service.vector.response.GetResp;
import io.milvus.v2.service.vector.response.InsertResp;
import java.util.*;
String CLUSTER_ENDPOINT = "http://localhost:19530";
// 1. Connect to Milvus server
ConnectConfig connectConfig = ConnectConfig.builder()
.uri(CLUSTER_ENDPOINT)
.build();
MilvusClientV2 client = new MilvusClientV2(connectConfig);
// 2. Create a collection in quick setup mode
CreateCollectionReq quickSetupReq = CreateCollectionReq.builder()
.collectionName("quick_setup")
.dimension(5)
.metricType("IP")
.build();
client.createCollection(quickSetupReq);
const { MilvusClient, DataType, sleep } = require("@zilliz/milvus2-sdk-node")
const address = "http://localhost:19530"
// 1. Set up a Milvus Client
client = new MilvusClient({address});
// 2. Create a collection in quick setup mode
await client.createCollection({
collection_name: "quick_setup",
dimension: 5,
});
Schritt 2: Zufällig generierte Entitäten einfügen
Verwenden Sie insert()
um Entitäten in die Sammlung einzufügen.
Verwenden Sie insert()
um Entitäten in die Sammlung einzufügen.
Verwenden Sie insert()
um Entitäten in die Sammlung einzufügen.
# 3. Insert randomly generated vectors
colors = ["green", "blue", "yellow", "red", "black", "white", "purple", "pink", "orange", "brown", "grey"]
data = []
for i in range(1000):
current_color = random.choice(colors)
current_tag = random.randint(1000, 9999)
data.append({
"id": i,
"vector": [ random.uniform(-1, 1) for _ in range(5) ],
"color": current_color,
"tag": current_tag,
"color_tag": f"{current_color}_{str(current_tag)}"
})
print(data[0])
# Output
#
# {
# "id": 0,
# "vector": [
# 0.7371107800002366,
# -0.7290389773227746,
# 0.38367002049157417,
# 0.36996000494220627,
# -0.3641898951462792
# ],
# "color": "yellow",
# "tag": 6781,
# "color_tag": "yellow_6781"
# }
res = client.insert(
collection_name="quick_setup",
data=data
)
print(res)
# Output
#
# {
# "insert_count": 1000,
# "ids": [
# 0,
# 1,
# 2,
# 3,
# 4,
# 5,
# 6,
# 7,
# 8,
# 9,
# "(990 more items hidden)"
# ]
# }
// 3. Insert randomly generated vectors into the collection
List<String> colors = Arrays.asList("green", "blue", "yellow", "red", "black", "white", "purple", "pink", "orange", "brown", "grey");
List<JsonObject> data = new ArrayList<>();
Gson gson = new Gson();
for (int i=0; i<1000; i++) {
Random rand = new Random();
String current_color = colors.get(rand.nextInt(colors.size()-1));
int current_tag = rand.nextInt(8999) + 1000;
JsonObject row = new JsonObject();
row.addProperty("id", (long) i);
row.add("vector", gson.toJsonTree(Arrays.asList(rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat())));
row.addProperty("color", current_color);
row.addProperty("tag", current_tag);
row.addProperty("color_tag", current_color + '_' + String.valueOf(rand.nextInt(8999) + 1000));
data.add(row);
}
InsertReq insertReq = InsertReq.builder()
.collectionName("quick_setup")
.data(data)
.build();
InsertResp insertResp = client.insert(insertReq);
System.out.println(insertResp.getInsertCnt());
// Output:
// 1000
// 3. Insert randomly generated vectors
const colors = ["green", "blue", "yellow", "red", "black", "white", "purple", "pink", "orange", "brown", "grey"]
var data = []
for (let i = 0; i < 1000; i++) {
current_color = colors[Math.floor(Math.random() * colors.length)]
current_tag = Math.floor(Math.random() * 8999 + 1000)
data.push({
"id": i,
"vector": [Math.random(), Math.random(), Math.random(), Math.random(), Math.random()],
"color": current_color,
"tag": current_tag,
"color_tag": `${current_color}_${current_tag}`
})
}
console.log(data[0])
// Output
//
// {
// id: 0,
// vector: [
// 0.16022394821966035,
// 0.6514875214491056,
// 0.18294484964044666,
// 0.30227694168725394,
// 0.47553087493572255
// ],
// color: 'blue',
// tag: 8907,
// color_tag: 'blue_8907'
// }
//
res = await client.insert({
collection_name: "quick_setup",
data: data
})
console.log(res.insert_cnt)
// Output
//
// 1000
//
Schritt 3: Partitionen erstellen und weitere Entitäten einfügen
Verwenden Sie create_partition()
um Partitionen zu erstellen und insert()
um weitere Entitäten in die Sammlung einzufügen.
Verwenden Sie createPartition()
um Partitionen zu erstellen und insert()
um weitere Entitäten in die Sammlung einzufügen.
Verwenden Sie createPartition()
um Partitionen zu erstellen und insert()
um weitere Entitäten in die Sammlung einzufügen.
# 4. Create partitions and insert more entities
client.create_partition(
collection_name="quick_setup",
partition_name="partitionA"
)
client.create_partition(
collection_name="quick_setup",
partition_name="partitionB"
)
data = []
for i in range(1000, 1500):
current_color = random.choice(colors)
data.append({
"id": i,
"vector": [ random.uniform(-1, 1) for _ in range(5) ],
"color": current_color,
"tag": current_tag,
"color_tag": f"{current_color}_{str(current_tag)}"
})
res = client.insert(
collection_name="quick_setup",
data=data,
partition_name="partitionA"
)
print(res)
# Output
#
# {
# "insert_count": 500,
# "ids": [
# 1000,
# 1001,
# 1002,
# 1003,
# 1004,
# 1005,
# 1006,
# 1007,
# 1008,
# 1009,
# "(490 more items hidden)"
# ]
# }
data = []
for i in range(1500, 2000):
current_color = random.choice(colors)
data.append({
"id": i,
"vector": [ random.uniform(-1, 1) for _ in range(5) ],
"color": current_color,
"tag": current_tag,
"color_tag": f"{current_color}_{str(current_tag)}"
})
res = client.insert(
collection_name="quick_setup",
data=data,
partition_name="partitionB"
)
print(res)
# Output
#
# {
# "insert_count": 500,
# "ids": [
# 1500,
# 1501,
# 1502,
# 1503,
# 1504,
# 1505,
# 1506,
# 1507,
# 1508,
# 1509,
# "(490 more items hidden)"
# ]
# }
// 4. Create partitions and insert some more data
CreatePartitionReq createPartitionReq = CreatePartitionReq.builder()
.collectionName("quick_setup")
.partitionName("partitionA")
.build();
client.createPartition(createPartitionReq);
createPartitionReq = CreatePartitionReq.builder()
.collectionName("quick_setup")
.partitionName("partitionB")
.build();
client.createPartition(createPartitionReq);
data.clear();
for (int i=1000; i<1500; i++) {
Random rand = new Random();
String current_color = colors.get(rand.nextInt(colors.size()-1));
int current_tag = rand.nextInt(8999) + 1000;
JsonObject row = new JsonObject();
row.addProperty("id", (long) i);
row.add("vector", gson.toJsonTree(Arrays.asList(rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat())));
row.addProperty("color", current_color);
row.addProperty("tag", current_tag);
data.add(row);
}
insertReq = InsertReq.builder()
.collectionName("quick_setup")
.data(data)
.partitionName("partitionA")
.build();
insertResp = client.insert(insertReq);
System.out.println(insertResp.getInsertCnt());
// Output:
// 500
data.clear();
for (int i=1500; i<2000; i++) {
Random rand = new Random();
String current_color = colors.get(rand.nextInt(colors.size()-1));
int current_tag = rand.nextInt(8999) + 1000;
JsonObject row = new JsonObject();
row.addProperty("id", (long) i);
row.add("vector", gson.toJsonTree(Arrays.asList(rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat(), rand.nextFloat())));
row.addProperty("color", current_color);
row.addProperty("tag", current_tag);
data.add(row);
}
insertReq = InsertReq.builder()
.collectionName("quick_setup")
.data(data)
.partitionName("partitionB")
.build();
insertResp = client.insert(insertReq);
System.out.println(insertResp.getInsertCnt());
// Output:
// 500
// 4. Create partitions and insert more entities
await client.createPartition({
collection_name: "quick_setup",
partition_name: "partitionA"
})
await client.createPartition({
collection_name: "quick_setup",
partition_name: "partitionB"
})
data = []
for (let i = 1000; i < 1500; i++) {
current_color = colors[Math.floor(Math.random() * colors.length)]
current_tag = Math.floor(Math.random() * 8999 + 1000)
data.push({
"id": i,
"vector": [Math.random(), Math.random(), Math.random(), Math.random(), Math.random()],
"color": current_color,
"tag": current_tag,
"color_tag": `${current_color}_${current_tag}`
})
}
res = await client.insert({
collection_name: "quick_setup",
data: data,
partition_name: "partitionA"
})
console.log(res.insert_cnt)
// Output
//
// 500
//
await sleep(5000)
data = []
for (let i = 1500; i < 2000; i++) {
current_color = colors[Math.floor(Math.random() * colors.length)]
current_tag = Math.floor(Math.random() * 8999 + 1000)
data.push({
"id": i,
"vector": [Math.random(), Math.random(), Math.random(), Math.random(), Math.random()],
"color": current_color,
"tag": current_tag,
"color_tag": `${current_color}_${current_tag}`
})
}
res = await client.insert({
collection_name: "quick_setup",
data: data,
partition_name: "partitionB"
})
console.log(res.insert_cnt)
// Output
//
// 500
//
Entitäten nach ID abrufen
Wenn Sie die IDs der Entitäten kennen, die Sie interessieren, können Sie die get()
Methode verwenden.
Wenn Sie die IDs der Entitäten kennen, die Sie interessieren, können Sie die get()
Methode verwenden.
Wenn Sie die IDs der Entitäten Ihres Interesses kennen, können Sie die get()
Methode verwenden.
# 4. Get entities by ID
res = client.get(
collection_name="quick_setup",
ids=[0, 1, 2]
)
print(res)
# Output
#
# [
# {
# "id": 0,
# "vector": [
# 0.68824464,
# 0.6552274,
# 0.33593303,
# -0.7099536,
# -0.07070546
# ],
# "color_tag": "green_2006",
# "color": "green"
# },
# {
# "id": 1,
# "vector": [
# -0.98531723,
# 0.33456197,
# 0.2844234,
# 0.42886782,
# 0.32753858
# ],
# "color_tag": "white_9298",
# "color": "white"
# },
# {
# "id": 2,
# "vector": [
# -0.9886812,
# -0.44129863,
# -0.29859528,
# 0.06059075,
# -0.43817034
# ],
# "color_tag": "grey_5312",
# "color": "grey"
# }
# ]
// 5. Get entities by ID
GetReq getReq = GetReq.builder()
.collectionName("quick_setup")
.ids(Arrays.asList(0L, 1L, 2L))
.build();
GetResp entities = client.get(getReq);
System.out.println(entities.getGetResults());
// Output:
// [
// QueryResp.QueryResult(entity={color=blue, color_tag=blue_4025, vector=[0.64311606, 0.73486423, 0.7352375, 0.7020566, 0.9885356], id=0, tag=4018}),
// QueryResp.QueryResult(entity={color=red, color_tag=red_4788, vector=[0.27244627, 0.7068031, 0.25976115, 0.69258106, 0.8767045], id=1, tag=6611}),
// QueryResp.QueryResult(entity={color=yellow, color_tag=yellow_8382, vector=[0.19625628, 0.40176708, 0.13231951, 0.50702184, 0.88406855], id=2, tag=5349})
//]
// 5. Get entities by id
res = await client.get({
collection_name: "quick_setup",
ids: [0, 1, 2],
output_fields: ["vector", "color_tag"]
})
console.log(res.data)
// Output
//
// [
// {
// vector: [
// 0.16022394597530365,
// 0.6514875292778015,
// 0.18294484913349152,
// 0.30227693915367126,
// 0.47553086280822754
// ],
// '$meta': { color: 'blue', tag: 8907, color_tag: 'blue_8907' },
// id: '0'
// },
// {
// vector: [
// 0.2459285855293274,
// 0.4974019527435303,
// 0.2154673933982849,
// 0.03719571232795715,
// 0.8348019123077393
// ],
// '$meta': { color: 'grey', tag: 3710, color_tag: 'grey_3710' },
// id: '1'
// },
// {
// vector: [
// 0.9404329061508179,
// 0.49662265181541443,
// 0.8088793158531189,
// 0.9337621331214905,
// 0.8269071578979492
// ],
// '$meta': { color: 'blue', tag: 2993, color_tag: 'blue_2993' },
// id: '2'
// }
// ]
//
Entitäten aus Partitionen abrufen
Sie können auch Entitäten aus bestimmten Partitionen abrufen.
# 5. Get entities from partitions
res = client.get(
collection_name="quick_setup",
ids=[1000, 1001, 1002],
partition_names=["partitionA"]
)
print(res)
# Output
#
# [
# {
# "color": "green",
# "tag": 1995,
# "color_tag": "green_1995",
# "id": 1000,
# "vector": [
# 0.7807706,
# 0.8083741,
# 0.17276904,
# -0.8580777,
# 0.024156934
# ]
# },
# {
# "color": "red",
# "tag": 1995,
# "color_tag": "red_1995",
# "id": 1001,
# "vector": [
# 0.065074645,
# -0.44882354,
# -0.29479212,
# -0.19798489,
# -0.77542555
# ]
# },
# {
# "color": "green",
# "tag": 1995,
# "color_tag": "green_1995",
# "id": 1002,
# "vector": [
# 0.027934508,
# -0.44199976,
# -0.40262738,
# -0.041511405,
# 0.024782438
# ]
# }
# ]
// 5. Get entities by ID in a partition
getReq = GetReq.builder()
.collectionName("quick_setup")
.ids(Arrays.asList(1001L, 1002L, 1003L))
.partitionName("partitionA")
.build();
entities = client.get(getReq);
System.out.println(entities.getGetResults());
// Output:
// [
// QueryResp.QueryResult(entity={color=pink, vector=[0.28847772, 0.5116072, 0.5695933, 0.49643654, 0.3461541], id=1001, tag=9632}),
// QueryResp.QueryResult(entity={color=blue, vector=[0.22428268, 0.8648047, 0.78426147, 0.84020555, 0.60779166], id=1002, tag=4523}),
// QueryResp.QueryResult(entity={color=white, vector=[0.4081068, 0.9027214, 0.88685805, 0.38036376, 0.27950126], id=1003, tag=9321})
// ]
// 5.1 Get entities by id in a partition
res = await client.get({
collection_name: "quick_setup",
ids: [1000, 1001, 1002],
partition_names: ["partitionA"],
output_fields: ["vector", "color_tag"]
})
console.log(res.data)
// Output
//
// [
// {
// id: '1000',
// vector: [
// 0.014254206791520119,
// 0.5817716121673584,
// 0.19793470203876495,
// 0.8064294457435608,
// 0.7745839357376099
// ],
// '$meta': { color: 'white', tag: 5996, color_tag: 'white_5996' }
// },
// {
// id: '1001',
// vector: [
// 0.6073881983757019,
// 0.05214758217334747,
// 0.730999231338501,
// 0.20900958776474,
// 0.03665429726243019
// ],
// '$meta': { color: 'grey', tag: 2834, color_tag: 'grey_2834' }
// },
// {
// id: '1002',
// vector: [
// 0.48877206444740295,
// 0.34028753638267517,
// 0.6527213454246521,
// 0.9763909578323364,
// 0.8031482100486755
// ],
// '$meta': { color: 'pink', tag: 9107, color_tag: 'pink_9107' }
// }
// ]
//
Grundlegende Operatoren verwenden
In diesem Abschnitt finden Sie Beispiele für die Verwendung grundlegender Operatoren bei der skalaren Filterung. Sie können diese Filter auch auf Vektorsuchen und Datenlöschungen anwenden.
Für weitere Informationen, siehe query()
in der SDK-Referenz.
Weitere Informationen finden Sie unter query()
in der SDK-Referenz.
Weitere Informationen finden Sie unter query()
in der SDK-Referenz.
Filtert Entitäten, deren Tag-Werte zwischen 1.000 und 1.500 liegen.
# 6. Use basic operators res = client.query( collection_name="quick_setup", filter="1000 < tag < 1500", output_fields=["color_tag"], limit=3 ) print(res) # Output # # [ # { # "id": 1, # "color_tag": "pink_1023" # }, # { # "id": 41, # "color_tag": "red_1483" # }, # { # "id": 44, # "color_tag": "grey_1146" # } # ]
// 6. Use basic operators QueryReq queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("1000 < tag < 1500") .outputFields(Arrays.asList("color_tag")) .limit(3) .build(); QueryResp queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [ // {"entity": { // "color_tag": "white_7588", // "id": 34 // }}, // {"entity": { // "color_tag": "orange_4989", // "id": 64 // }}, // {"entity": { // "color_tag": "white_3415", // "id": 73 // }} // ]}
// 6. Use basic operators res = await client.query({ collection_name: "quick_setup", filter: "1000 < tag < 1500", output_fields: ["color_tag"], limit: 3 }) console.log(res.data) // Output // // [ // { // '$meta': { color: 'pink', tag: 1050, color_tag: 'pink_1050' }, // id: '6' // }, // { // '$meta': { color: 'purple', tag: 1174, color_tag: 'purple_1174' }, // id: '24' // }, // { // '$meta': { color: 'orange', tag: 1023, color_tag: 'orange_1023' }, // id: '40' // } // ] //
Filtert Entitäten, deren Farbwerte auf braun gesetzt sind.
res = client.query( collection_name="quick_setup", filter='color == "brown"', output_fields=["color_tag"], limit=3 ) print(res) # Output # # [ # { # "color_tag": "brown_5343", # "id": 15 # }, # { # "color_tag": "brown_3167", # "id": 27 # }, # { # "color_tag": "brown_3100", # "id": 30 # } # ]
queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("color == \"brown\"") .outputFields(Arrays.asList("color_tag")) .limit(3) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [ // {"entity": { // "color_tag": "brown_7792", // "id": 3 // }}, // {"entity": { // "color_tag": "brown_9695", // "id": 7 // }}, // {"entity": { // "color_tag": "brown_2551", // "id": 15 // }} // ]}
res = await client.query({ collection_name: "quick_setup", filter: 'color == "brown"', output_fields: ["color_tag"], limit: 3 }) console.log(res.data) // Output // // [ // { // '$meta': { color: 'brown', tag: 6839, color_tag: 'brown_6839' }, // id: '22' // }, // { // '$meta': { color: 'brown', tag: 7849, color_tag: 'brown_7849' }, // id: '32' // }, // { // '$meta': { color: 'brown', tag: 7855, color_tag: 'brown_7855' }, // id: '33' // } // ] //
Filtert Entitäten, deren Farbwerte nicht auf grün und lila eingestellt sind.
res = client.query( collection_name="quick_setup", filter='color not in ["green", "purple"]', output_fields=["color_tag"], limit=3 ) print(res) # Output # # [ # { # "color_tag": "yellow_6781", # "id": 0 # }, # { # "color_tag": "pink_1023", # "id": 1 # }, # { # "color_tag": "blue_3972", # "id": 2 # } # ]
queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("color not in [\"green\", \"purple\"]") .outputFields(Arrays.asList("color_tag")) .limit(3) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [ // {"entity": { // "color_tag": "white_4597", // "id": 0 // }}, // {"entity": { // "color_tag": "white_8708", // "id": 2 // }}, // {"entity": { // "color_tag": "brown_7792", // "id": 3 // }} // ]}
res = await client.query({ collection_name: "quick_setup", filter: 'color not in ["green", "purple"]', output_fields: ["color_tag"], limit: 3 }) console.log(res.data) // Output // // [ // { // '$meta': { color: 'blue', tag: 8907, color_tag: 'blue_8907' }, // id: '0' // }, // { // '$meta': { color: 'grey', tag: 3710, color_tag: 'grey_3710' }, // id: '1' // }, // { // '$meta': { color: 'blue', tag: 2993, color_tag: 'blue_2993' }, // id: '2' // } // ] //
Filtert Artikel, deren Farb-Tags mit rot beginnen.
res = client.query( collection_name="quick_setup", filter='color_tag like "red%"', output_fields=["color_tag"], limit=3 ) print(res) # Output # # [ # { # "color_tag": "red_6443", # "id": 17 # }, # { # "color_tag": "red_1483", # "id": 41 # }, # { # "color_tag": "red_4348", # "id": 47 # } # ]
queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("color_tag like \"red%\"") .outputFields(Arrays.asList("color_tag")) .limit(3) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [ // {"entity": { // "color_tag": "red_4929", // "id": 9 // }}, // {"entity": { // "color_tag": "red_8284", // "id": 13 // }}, // {"entity": { // "color_tag": "red_3021", // "id": 44 // }} // ]}
res = await client.query({ collection_name: "quick_setup", filter: 'color_tag like "red%"', output_fields: ["color_tag"], limit: 3 }) console.log(res.data) // Output // // [ // { // '$meta': { color: 'red', tag: 8773, color_tag: 'red_8773' }, // id: '17' // }, // { // '$meta': { color: 'red', tag: 9197, color_tag: 'red_9197' }, // id: '34' // }, // { // '$meta': { color: 'red', tag: 7914, color_tag: 'red_7914' }, // id: '46' // } // ] //
Filtert Entitäten, deren Farben auf rot gesetzt sind und deren Tag-Werte im Bereich von 1.000 bis 1.500 liegen.
res = client.query( collection_name="quick_setup", filter='(color == "red") and (1000 < tag < 1500)', output_fields=["color_tag"], limit=3 ) print(res) # Output # # [ # { # "color_tag": "red_1483", # "id": 41 # }, # { # "color_tag": "red_1100", # "id": 94 # }, # { # "color_tag": "red_1343", # "id": 526 # } # ]
queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("(color == \"red\") and (1000 < tag < 1500)") .outputFields(Arrays.asList("color_tag")) .limit(3) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [ // {"entity": { // "color_tag": "red_8124", // "id": 83 // }}, // {"entity": { // "color_tag": "red_5358", // "id": 501 // }}, // {"entity": { // "color_tag": "red_3564", // "id": 638 // }} // ]}
res = await client.query({ collection_name: "quick_setup", filter: '(color == "red") and (1000 < tag < 1500)', output_fields: ["color_tag"], limit: 3 }) console.log(res.data) // Output // // [ // { // '$meta': { color: 'red', tag: 1436, color_tag: 'red_1436' }, // id: '67' // }, // { // '$meta': { color: 'red', tag: 1463, color_tag: 'red_1463' }, // id: '160' // }, // { // '$meta': { color: 'red', tag: 1073, color_tag: 'red_1073' }, // id: '291' // } // ] //
Erweiterte Operatoren verwenden
In diesem Abschnitt finden Sie Beispiele für die Verwendung erweiterter Operatoren bei der skalaren Filterung. Sie können diese Filter auch auf Vektorsuchen und Datenlöschungen anwenden.
Entitäten zählen
Zählt die Gesamtzahl der Entitäten in einer Sammlung.
# 7. Use advanced operators # Count the total number of entities in a collection res = client.query( collection_name="quick_setup", output_fields=["count(*)"] ) print(res) # Output # # [ # { # "count(*)": 2000 # } # ]
// 7. Use advanced operators // Count the total number of entities in the collection queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("") .outputFields(Arrays.asList("count(*)")) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [{"entity": {"count(*)": 2000}}]}
// 7. Use advanced operators // Count the total number of entities in a collection res = await client.query({ collection_name: "quick_setup", output_fields: ["count(*)"] }) console.log(res.data) // Output // // [ { 'count(*)': '2000' } ] //
Zählt die Gesamtzahl der Entitäten in bestimmten Partitionen.
# Count the number of entities in a partition res = client.query( collection_name="quick_setup", output_fields=["count(*)"], partition_names=["partitionA"] ) print(res) # Output # # [ # { # "count(*)": 500 # } # ]
// Count the number of entities in a partition queryReq = QueryReq.builder() .collectionName("quick_setup") .partitionNames(Arrays.asList("partitionA")) .filter("") .outputFields(Arrays.asList("count(*)")) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [{"entity": {"count(*)": 500}}]}
// Count the number of entities in a partition res = await client.query({ collection_name: "quick_setup", output_fields: ["count(*)"], partition_names: ["partitionA"] }) console.log(res.data) // Output // // [ { 'count(*)': '500' } ] //
Zählt die Anzahl der Entitäten, die einer Filterbedingung entsprechen
# Count the number of entities that match a specific filter res = client.query( collection_name="quick_setup", filter='(color == "red") and (1000 < tag < 1500)', output_fields=["count(*)"], ) print(res) # Output # # [ # { # "count(*)": 3 # } # ]
// Count the number of entities that match a specific filter queryReq = QueryReq.builder() .collectionName("quick_setup") .filter("(color == \"red\") and (1000 < tag < 1500)") .outputFields(Arrays.asList("count(*)")) .build(); queryResp = client.query(queryReq); System.out.println(JSONObject.toJSON(queryResp)); // Output: // {"queryResults": [{"entity": {"count(*)": 7}}]}
// Count the number of entities that match a specific filter res = await client.query({ collection_name: "quick_setup", filter: '(color == "red") and (1000 < tag < 1500)', output_fields: ["count(*)"] }) console.log(res.data) // Output // // [ { 'count(*)': '10' } ] //
Referenz zu skalaren Filtern
Grundlegende Operatoren
Ein boolescher Ausdruck ist immer eine Zeichenkette aus Feldnamen, die durch Operatoren verbunden sind. In diesem Abschnitt erfahren Sie mehr über die grundlegenden Operatoren.
Operator | Beschreibung |
---|---|
und (&&) | Wahr, wenn beide Operanden wahr sind |
oder (||) | Wahr, wenn einer der beiden Operanden wahr ist |
+, -, *, / | Addition, Subtraktion, Multiplikation und Division |
** | Exponent |
% | Modulus |
<, > | Kleiner als, größer als |
==, != | Gleich, nicht gleich |
<=, >= | Kleiner als oder gleich, größer als oder gleich |
nicht | Kehrt das Ergebnis einer gegebenen Bedingung um. |
wie | Vergleicht einen Wert mit ähnlichen Werten unter Verwendung von Platzhalteroperatoren. Zum Beispiel passt like "prefix%" zu Zeichenfolgen, die mit "prefix" beginnen. |
in | Prüft, ob ein Ausdruck mit einem beliebigen Wert in einer Liste von Werten übereinstimmt. |
Erweiterte Operatoren
count(*)
Zählt die genaue Anzahl der Entitäten in der Sammlung. Verwenden Sie dies als Ausgabefeld, um die genaue Anzahl der Entitäten in einer Sammlung oder Partition zu erhalten.
Hinweise
Dies gilt für geladene Sammlungen. Sie sollten es als einziges Ausgabefeld verwenden.