Upsert()
This method upserts entities into Milvus. An upsert is a data-level operation that will overwrite an existing entity if a specified field already exists in a collection, and insert a new entity if the specified value doesn’t already exist.
Invocation
client.Upsert(ctx, collName, partName, data)
Parameters
Parameter | Description | Type |
---|---|---|
ctx | Context to control API invocation process | context.Context |
collName | Name of the collection to upsert data into. | String |
partName | Name of the partition to upsert data into. Data will be upserted into default partition if it is left empty. | String |
data | Data to upsert in each field. Data must be converted into columns for different fields. | Variadic slice of entity.Column |
Return
Entity.Column that represents the IDs of the upserted data.
Errors
err
: error in the process (if any). Possible errors are listed below:
ErrClientNotReady
, error that the client is not connected.ErrCollectionNotExists
, error that the collection with the specified name does not exist.error that the specified field is not valid.
error that API invocation failed.
Example
bookIDs := make([]int64, 0, 2000)
wordCounts := make([]int64, 0, 2000)
bookIntros := make([][]float32, 0, 2000)
for i := 0; i < 2000; i++ {
bookIDs = append(bookIDs, int64(i))
wordCounts = append(wordCounts, int64(i+10000))
v := make([]float32, 0, 2)
for j := 0; j < 2; j++ {
v = append(v, rand.Float32())
}
bookIntros = append(bookIntros, v)
}
idColumn := entity.NewColumnInt64("book_id", bookIDs)
wordColumn := entity.NewColumnInt64("word_count", wordCounts)
introColumn := entity.NewColumnFloatVector("book_intro", 2, bookIntros)
_, err = milvusClient.Upsert(
context.Background(),
"book",
"",
idColumn,
wordColumn,
introColumn,
)
if err != nil {
log.Fatal("failed to upsert data:", err.Error())
}