Skip to content
Guides Zilliz Cloud Milvus Attu

Resource Group Operations

Resource group APIs manage query-node resource groups and move nodes or loaded replicas between groups. These APIs are primarily useful for Milvus cluster deployments.

Create a resource group.

createResourceGroup(data: CreateResourceGroupReq): Promise<ResStatus>

Parameters:

  • resource_group: Resource group name.
  • config?: Resource group configuration.
  • timeout?: Request timeout in milliseconds.
type ResourceGroupConfig = {
requests?: { node_num: number };
limits?: { node_num: number };
transfer_from?: { resource_group: string }[];
transfer_to?: { resource_group: string }[];
node_filter?: { node_labels: KeyValuePair[] };
};

Example:

await client.createResourceGroup({
resource_group: 'rg_search',
config: {
requests: { node_num: 2 },
limits: { node_num: 4 },
},
});

List resource group names.

listResourceGroups(data?: GrpcTimeOut): Promise<ListResourceGroupsResponse>

Response:

  • status: Response status.
  • resource_groups: Resource group names.

Example:

const groups = await client.listResourceGroups();
console.log(groups.resource_groups);

Describe one resource group.

describeResourceGroup(data: DescribeResourceGroupsReq): Promise<DescribeResourceGroupResponse>

Parameters:

  • resource_group: Resource group name.
  • timeout?: Request timeout in milliseconds.

Response:

type ResourceGroup = {
name: string;
capacity: number;
num_available_node: number;
num_loaded_replica: { [collectionName: string]: number };
num_outgoing_node: { [collectionName: string]: number };
num_incoming_node: { [collectionName: string]: number };
config?: ResourceGroupConfig;
nodes?: {
node_id: number;
address: string;
hostname: string;
}[];
};

Example:

const group = await client.describeResourceGroup({
resource_group: 'rg_search',
});

Update multiple resource group configurations in one request.

updateResourceGroups(data: UpdateRresourceGroupReq): Promise<ResStatus>

Parameters:

  • resource_groups: Map from resource group name to ResourceGroupConfig.
  • timeout?: Request timeout in milliseconds.

Example:

await client.updateResourceGroups({
resource_groups: {
rg_search: {
requests: { node_num: 2 },
limits: { node_num: 4 },
},
},
});

Transfer query nodes between resource groups.

transferNode(data: TransferNodeReq): Promise<ResStatus>

Parameters:

  • source_resource_group: Source resource group.
  • target_resource_group: Target resource group.
  • num_node: Number of nodes to transfer.
  • timeout?: Request timeout in milliseconds.

Example:

await client.transferNode({
source_resource_group: 'rg_default',
target_resource_group: 'rg_search',
num_node: 1,
});

Transfer loaded replicas for a collection between resource groups.

transferReplica(data: TransferReplicaReq): Promise<ResStatus>

Parameters:

  • collection_name: Collection name.
  • source_resource_group: Source resource group.
  • target_resource_group: Target resource group.
  • num_replica: Number of replicas to transfer.
  • db_name?: Database name.
  • timeout?: Request timeout in milliseconds.

Example:

await client.transferReplica({
collection_name: 'books',
source_resource_group: 'rg_default',
target_resource_group: 'rg_search',
num_replica: 1,
});

Drop a resource group.

dropResourceGroup(data: DropResourceGroupsReq): Promise<ResStatus>

Parameters:

  • resource_group: Resource group name.
  • timeout?: Request timeout in milliseconds.

Example:

await client.dropResourceGroup({ resource_group: 'rg_search' });

Drop all non-default resource groups after transferring nodes back to the default resource group.

dropAllResourceGroups(): Promise<ResStatus[]>

Use this only in cleanup scripts or test environments.