milvus/docs/developer_guides/appendix_b_api_reference.md
min.tian 3ea8b0a4fa
[skip e2e] Check the syntax of appendix_b_api_refs md (#13923)
Signed-off-by: min.tian <min.tian.cn@gmail.com>
2021-12-22 14:07:13 +08:00

28 KiB
Raw Blame History

Appendix B. API Reference

In this section, we introduce the RPCs of milvus service. A brief description of the RPCs is listed as follows.

RPC description
CreateCollection create a collection based on schema statement
DropCollection drop a collection
HasCollection check whether a collection exists
LoadCollection load collection to memory for future search
ReleaseCollection release the collection from memory
DescribeCollection show a collection's schema and its descriptive statistics
GetCollectionStatistics show a collection's statistics
ShowCollections list all collections
CreatePartition create a partition
DropPartition drop a partition
HasPartition check whether a partition exists
LoadPartition load partition to memory for future search
ReleasePartitions release partitions from memory
GetPartitionStatistics show a partition's statistics
ShowPartitions list a collection's all partitions
CreateIndex create an index for a field in the collection
DescribeIndex get index details for a field in the collection
GetIndexStates get build index state
DropIndex drop a specific index for a field in the collection
Insert insert a batch of rows into a collection or a partition
Search query the columns of a collection or a partition with ANNS statements and boolean expressions
Flush Perform persistent storage of data in memory

MsgBase is a base struct in each request.

message MsgBase {
  MsgType msg_type = 1;
  int64  msgID = 2;
  uint64 timestamp = 3;
  int64 sourceID = 4;
}

MsgType is the enum to distinguish different message types in message queue, such as insert msg, search msg, etc. msgID is the unique id identifier of message. timestamp is the time when this message was generated. sourceID is the unique id identifier of the source.

3.1 Definition Requests

3.1.1 CreateCollection

Interface:

rpc CreateCollection(CreateCollectionRequest) returns (common.Status){}

Description:

Create a collection through CreateCollectionRequest.

Parameters:

  • CreateCollectionRequest

CreateCollectionRequest struct is shown as follows:

message CreateCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  // `schema` is the serialized `schema.CollectionSchema`
  bytes schema = 4;
}

message CollectionSchema {
  string name = 1;
  string description = 2;
  bool autoID = 3;
  repeated FieldSchema fields = 4;
}

CreateCollectionRequest contains MsgBase, db_name, collection_name and serialized collection schema schema. db_name contains only a string named collection_name. Collection with the same collection_name is going to be created.

Collection schema contains all the base information of a collection including collection name, description, autoID and fields. Collection description is defined by the database manager to describe the collection. autoID determines whether the ID of each row of data is user-defined. If autoID is true, our system will generate a unique ID for each data. If autoID is false, users need to give each entity an ID when inserting.

Fields is a list of FieldSchema. Each schema should include Field name, description, dataType, type_params and index_params.

FieldSchema struct is shown as follows:

message FieldSchema {
  int64 fieldID = 1;
  string name = 2;
  bool is_primary_key = 3;
  string description = 4;
  DataType data_type = 5;
  repeated common.KeyValuePair type_params = 6;
  repeated common.KeyValuePair index_params = 7;
}

Field schema contains all the base information of a field including fieldID, name, description, data_type, type_params and index_params. data_type is an enum type to distinguish different data types. Total enum is shown in the last of this doc

type_params contains the detailed information of data_type. For example, vector data type should include dimension information. You can give a pair of <dim, 8> to let the field store an 8-dimension vector.

index_paramsFor fast search, you build an index for the field. You specify detailed index information for a field. Detailed information about index can be seen in chapter 2.2.3

Returns:

  • common.Status
message Status {
ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.2 DropCollection

Interface:

rpc DropCollection(DropCollectionRequest) returns (common.Status) {}

Description:

This method is used to delete collection.

Parameters:

  • DropCollectionRequest

DropCollectionRequest struct is shown as follows:

message DropCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
}

Collection with the same collection_name is going to be deleted.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.3 HasCollection

Interface:

rpc HasCollection(HasCollectionRequest) returns (BoolResponse) {}

Description:

This method is used to test collection existence.

Parameters:

  • HasCollectionRequest

HasCollectionRequest struct is shown as follows:

message HasCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
}

The server finds the collection through collection_name and checks whether the collection exists.

Returns:

  • BoolResponse
message BoolResponse {
  common.Status status = 1;
  bool value = 2;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

value represents whether the collection exists. If collection exists, value will be true. If collection doesn't exist, value will be false.

3.1.4 LoadCollection

Interface:

rpc LoadCollection(LoadCollectionRequest) returns (common.Status) {}

Description:

This method is used to load collection.

Parameters:

  • LoadCollectionRequest

LoadCollectionRequest struct is shown as follows:

message LoadCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
}

Collection with the same collection_name is going to be loaded to memory.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.5 ReleaseCollection

Interface:

rpc ReleaseCollection(ReleaseCollectionRequest) returns (common.Status) {}

Description:

This method is used to release collection.

Parameters:

  • ReleaseCollectionRequest

ReleaseCollectionRequest struct is shown as follows:

message ReleaseCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
}

Collection with the same collection_name is going to be released from memory.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.6 DescribeCollection

Interface:

 rpc DescribeCollection(DescribeCollectionRequest) returns (CollectionDescription) {}

Description:

This method is used to get collection schema.

Parameters:

  • DescribeCollectionRequest

DescribeCollectionRequest struct is shown as follows:

message DescribeCollectionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  int64 collectionID = 4;
}

The server finds the collection through collection_name and gets detailed collection information. And collectionID is for internal component to get collection details.

Returns:

  • DescribeCollectionResponse
message DescribeCollectionResponse {
  common.Status status = 1;
  schema.CollectionSchema schema = 2;
  int64 collectionID = 3;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

schema is collection schema same as the collection schema in CreateCollection.

3.1.7 GetCollectionStatistics

Interface:

 rpc GetCollectionStatistics(GetCollectionStatisticsRequest) returns (GetCollectionStatisticsResponse) {}

Description:

This method is used to get collection statistics.

Parameters:

  • GetCollectionStatisticsRequest

GetCollectionStatisticsRequest struct is shown as follows:

message GetCollectionStatisticsRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
}

The server finds the collection through collection_name and gets detailed collection statistics.

Returns:

  • GetCollectionStatisticsResponse
message GetCollectionStatisticsResponse {
  common.Status status = 1;
  repeated common.KeyValuePair stats = 2;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the error details.

stats is a map saving different statistics. For example, you can get row_count of a collection with key 'row_count'.

3.1.8 ShowCollections

Interface:

rpc ShowCollections(ShowCollectionsRequest) returns (ShowCollectionsResponse) {}

Description:

This method is used to get collection schema.

Parameters: None

Returns:

  • ShowCollectionsResponse
message ShowCollectionsResponse {
  common.Status status = 1;
  repeated string collection_names = 2;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the error details.

collection_names is a list contains all collections' names.

3.1.9 CreatePartition

Interface:

rpc CreatePartition(CreatePartitionRequest) returns (common.Status) {}

Description:

This method is used to create a partition

Parameters:

  • CreatePartitionRequest

CreatePartitionRequest struct is shown as follows:

message CreatePartitionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string partition_name = 4;
}

The server creates partition with the partition_name in collection with name of collection_name

  • Returns:

  • common.Status

message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.10 DropPartition

Interface:

rpc DropPartition(DropPartitionRequest) returns (common.Status) {}

Description:

This method is used to drop partition.

Parameters:

  • DropPartitionRequest

DropPartitionRequest struct is shown as follows:

message DropPartitionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string partition_name = 4;
}

Drop partition with the same partition_name in collection with collection_name is going to be deleted.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.11 HasPartition

Interface:

rpc HasPartition(HasPartitionRequest) returns (BoolResponse) {}

Description:

This method is used to test partition existence.

Parameters:

  • HasPartitionRequest

HasPartitionRequest struct is shown as follows:

message HasPartitionRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string partition_name = 4;
}

Partition with the same partition_name is going to be tested whether it is in collection with collection_name.

Returns:

  • BoolResponse
message BoolResponse {
  common.Status status = 1;
  bool value = 2;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

value represents whether the partition exists. If partition exists, value will be true. If partition doesn't exist, value will be false.

3.1.12 LoadPartitions

Interface:

rpc LoadPartitions(LoadPartitionsRequest) returns (common.Status) {}

Description:

This method is used to load collection.

Parameters:

  • LoadPartitionsRequest

LoadPartitionsRequest struct is shown as follows:

message LoadPartitionsRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  repeated string partition_names = 4;
}

partition_names is a list of partition_name. These partitions in collection with the collection_name are going to be loaded to memory.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.13 ReleasePartitions

Interface:

rpc ReleasePartitions(ReleasePartitionsRequest) returns (common.Status) {}

Description:

This method is used to release partition.

Parameters:

  • ReleasePartitionsRequest

ReleasePartitionsRequest struct is shown as follows:

message ReleasePartitionsRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  repeated string partition_names = 4;
}

partition_names is a list of partition_name. These partitions in collection with the collection_name are going to be released from memory.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

3.1.14 GetPartitionStatistics

Interface:

 rpc GetPartitionStatistics(GetPartitionStatisticsRequest) returns (GetPartitionStatisticsResponse) {}

Description:

This method is used to get partition statistics.

Parameters:

  • GetPartitionStatisticsRequest

GetPartitionStatisticsRequest struct is shown as follows:

message GetPartitionStatisticsRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string partition_name = 4;
}

The server finds the partition through partition_name in collection with collection_name and gets detailed partition statistics.

Returns:

  • GetCollectionStatisticsResponse
message GetPartitionStatisticsResponse {
  common.Status status = 1;
  repeated common.KeyValuePair stats = 2;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

stats is a map saving different statistics. For example, you can get row_count of a partition with key 'row_count'.

3.1.15 ShowPartitions

Interface:

rpc ShowPartitions(ShowPartitionsRequest) returns (StringListResponse) {}

Description:

This method is used to get partition descriptions.

Parameters:

  • ShowPartitionsRequest

ShowPartitionsRequest struct is shown as follows:

message ShowPartitionsRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  int64 collectionID = 4;
}

Partitions in the collection with collection_name are going to be listed.

Returns:

  • StringListResponse
message ShowPartitionsResponse {
  common.Status status = 1;
  repeated string partition_names = 2;
  repeated int64 partitionIDs = 3;
}

status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

partition_names is a list contains all partitions' name. partitionIDs is a list contains all partitions' ids. And the index of a partition in partition_names and partitionIDs are same.

3.2 Manipulation Requests

3.2.1 Insert

Interface:

rpc Insert(InsertRequest) returns (InsertResponse){}

Description:

Insert a batch of rows into a collection or a partition

Parameters:

  • InsertRequest

InsertRequest struct is shown as follows:

message InsertRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string partition_name = 4;
  repeated common.Blob row_data = 5;
  repeated uint32 hash_keys = 6;
}

message Blob {
  bytes value = 1;
}

Insert a batch of row_data into collection with collection_name and partition with partition_name. Blob contains bytes of value.

Returns:

  • common.Status
message InsertResponse {
  common.Status status = 1;
  int64 rowID_begin = 2;
  int64 rowID_end = 3;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

rowID_begin and rowID_end are the ID of inserted values.

3.2.2 Delete
  • DeleteByID

3.3 Query

3.3 Index

3.3.1 CreateIndex

Interface:

rpc CreateIndex(CreateIndexRequest) returns (common.Status){}

Description:

Create an index for a collection.

Parameters:

  • CreateIndexRequest

CreateIndexRequest struct is shown as follows:

message CreateIndexRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string field_name = 4;
  repeated common.KeyValuePair extra_params = 5;
}

CreateIndex for the field with field_name in collection with collection_name.

extra_paramsFor fast search, you build index for field. You specify detailed index information for a field. Detailed information about index can be seen in chapter 2.2.3

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe error detail.

3.3.2 DescribeIndex

Interface:

rpc DescribeIndex(DescribeIndexRequest) returns (common.Status){}

Description:

Get an index detailed info

Parameters:

  • DescribeIndexRequest

DescribeIndexRequest struct is shown as follows:

message DescribeIndexRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string field_name = 4;
  string index_name = 5;
}

Get details of an index for the field with field_name in collection with collection_name.

index_name A field can create multiple indexes. And you can drop a specific index through index_name.

Returns:

  • common.Status
message DescribeIndexResponse {
  common.Status status = 1;
  repeated IndexDescription index_descriptions = 2;
}

message IndexDescription {
  string index_name = 1;
  int64 indexID = 2;
  repeated common.KeyValuePair params = 3;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe error detail.

index_descriptions is a list of index descriptions. If index_name is specific in request, the list length will be 0. Otherwise, if index_name is empty, the response will return all indexes in the field of a collection.

paramsFor fast search, you build index for field. You specify detailed index information for a field. Detailed information about index can be seen in chapter 2.2.3

3.3.3 GetIndexStates

Interface:

rpc GetIndexStates(GetIndexStatesRequest) returns (GetIndexStatesRequest){}

Description:

Get index build progress info.

Parameters:

  • GetIndexStatesRequest

GetIndexStatesRequest struct is shown as follows:

message GetIndexStatesRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string field_name = 4;
  string index_name = 5;
}

Get index build progress info for the field with field_name in collection with collection_name.

index_name A field can create multiple indexes. And you can get specific index state through index_name.

Returns:

  • common.Status
message GetIndexStatesResponse {
  common.Status status = 1;
  common.IndexState state = 2;
}

enum IndexState {
  IndexStateNone = 0;
  Unissued = 1;
  InProgress = 2;
  Finished = 3;
  Failed = 4;
  Deleted = 5;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.

index state is an enum type to distinguish the different processes in the index building process.

3.3.4 DropIndex

Interface:

rpc DropIndex(DropIndexRequest) returns (common.Status){}

Description:

Drop an index for a collection.

Parameters:

  • DropIndexRequest

DropIndexRequest struct is shown as follows:

message DropIndexRequest {
  common.MsgBase base = 1;
  string db_name = 2;
  string collection_name = 3;
  string field_name = 4;
  string index_name = 5;
}

DropIndex for the field with field_name in collection with collection_name.

index_name A field can create multiple indexes. And you can drop specific index through index_name.

Returns:

  • common.Status
message Status {
  ErrorCode error_code = 1;
  string reason = 2;
}

Status represents the server error code. It doesn't contain grpc error but contains the server error code. We can get the executing result in common status. error_code is an enum type to distinguish the executing error type. The total Errorcode is shown in the last of this code. And the reason field is a string to describe the detailed error.