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.

Update cross-cluster replication configuration.

updateReplicateConfiguration(data: UpdateReplicateConfigurationReq): Promise<ResStatus>
update_replicate_configuration(data: UpdateReplicateConfigurationReq): Promise<ResStatus> // alias

Parameters:

  • clusters: Cluster connection definitions. Required.
  • cross_cluster_topology?: Source-to-target topology entries.
  • force_promote?: Force promote the current cluster to primary.
  • timeout?: Request timeout in milliseconds.
type ReplicateCluster = {
cluster_id: string;
connection_param: {
uri: string;
token?: string;
};
pchannels?: string[];
};
type CrossClusterTopology = {
source_cluster_id: string;
target_cluster_id: string;
};

Example:

await client.updateReplicateConfiguration({
clusters: [
{
cluster_id: 'primary',
connection_param: {
uri: 'primary.example.com:19530',
token: process.env.PRIMARY_TOKEN,
},
},
{
cluster_id: 'secondary',
connection_param: {
uri: 'secondary.example.com:19530',
token: process.env.SECONDARY_TOKEN,
},
},
],
cross_cluster_topology: [
{
source_cluster_id: 'primary',
target_cluster_id: 'secondary',
},
],
});

Get the current cross-cluster replication configuration.

getReplicateConfiguration(data?: GetReplicateConfigurationReq): Promise<GetReplicateConfigurationResponse>
get_replicate_configuration(data?: GetReplicateConfigurationReq): Promise<GetReplicateConfigurationResponse> // alias

Parameters:

  • timeout?: Request timeout in milliseconds.

Response:

interface GetReplicateConfigurationResponse extends resStatusResponse {
configuration: {
clusters: ReplicateCluster[];
cross_cluster_topology?: CrossClusterTopology[];
};
}

Example:

const config = await client.getReplicateConfiguration();
console.log(config.configuration.clusters);