Microsoft Azure Search Management Client Library for Python
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Core operations for creating, updating, deleting, and configuring Azure Search services. These operations enable complete lifecycle management of search services including provisioning, scaling, status monitoring, and service configuration.
Create new search services or update existing ones with comprehensive configuration options including SKU, capacity, networking, security, and feature settings.
def create_or_update(
resource_group_name: str,
search_service_name: str,
service: SearchService,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> LROPoller[SearchService]:
"""
Create or update a search service.
Parameters:
resource_group_name (str): Resource group name
search_service_name (str): Search service name (2-60 chars, alphanumeric and hyphens)
service (SearchService): Service configuration
client_request_id (str, optional): Client-generated request ID for tracking
Returns:
LROPoller[SearchService]: Long-running operation for service creation/update
Raises:
ResourceExistsError: Service already exists (for create operations)
HttpResponseError: Invalid configuration or quota exceeded
"""
def update(
resource_group_name: str,
search_service_name: str,
service: SearchServiceUpdate,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> SearchService:
"""
Update an existing search service with partial configuration changes.
Parameters:
resource_group_name (str): Resource group name
search_service_name (str): Search service name
service (SearchServiceUpdate): Partial service updates
client_request_id (str, optional): Client-generated request ID
Returns:
SearchService: Updated service configuration
"""Usage Example:
from azure.mgmt.search.models import (
SearchService, SearchServiceUpdate, Sku, SkuName,
PublicNetworkAccess, NetworkRuleSet, IpRule, SearchBypass
)
# Create a new search service
search_service = SearchService(
location="East US",
sku=Sku(name=SkuName.STANDARD),
replica_count=2,
partition_count=1,
public_network_access=PublicNetworkAccess.ENABLED,
network_rule_set=NetworkRuleSet(
ip_rules=[IpRule(value="203.0.113.0/24")],
bypass=SearchBypass.AZURE_PORTAL
),
tags={"environment": "production", "team": "search"}
)
# Start the creation operation
create_operation = client.services.begin_create_or_update(
resource_group_name="my-resource-group",
search_service_name="my-search-service",
service=search_service
)
# Wait for completion (can take 15+ minutes)
service = create_operation.result()
print(f"Service created: {service.name}, Status: {service.status}")
# Update service to add more replicas
service_update = SearchServiceUpdate(
replica_count=3,
tags={"environment": "production", "team": "search", "scaled": "true"}
)
updated_service = client.services.update(
resource_group_name="my-resource-group",
search_service_name="my-search-service",
service=service_update
)Get detailed information about existing search services including configuration, status, and metadata.
def get(
resource_group_name: str,
search_service_name: str,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> SearchService:
"""
Get a search service by name.
Parameters:
resource_group_name (str): Resource group name
search_service_name (str): Search service name
client_request_id (str, optional): Client-generated request ID
Returns:
SearchService: Complete service configuration and status
Raises:
ResourceNotFoundError: Service does not exist
"""List search services by resource group or subscription for inventory and management operations.
def list_by_resource_group(
resource_group_name: str,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> ItemPaged[SearchService]:
"""
List all search services in a resource group.
Parameters:
resource_group_name (str): Resource group name
client_request_id (str, optional): Client-generated request ID
Returns:
ItemPaged[SearchService]: Paginated list of search services
"""
def list_by_subscription(
*,
client_request_id: Optional[str] = None,
**kwargs
) -> ItemPaged[SearchService]:
"""
List all search services in the subscription.
Parameters:
client_request_id (str, optional): Client-generated request ID
Returns:
ItemPaged[SearchService]: Paginated list of search services across all resource groups
"""Usage Example:
# Get specific service details
service = client.services.get("my-resource-group", "my-search-service")
print(f"Service: {service.name}")
print(f"Status: {service.status}")
print(f"SKU: {service.sku.name}")
print(f"Replicas: {service.replica_count}")
print(f"Partitions: {service.partition_count}")
# List all services in resource group
rg_services = client.services.list_by_resource_group("my-resource-group")
for service in rg_services:
print(f"RG Service: {service.name} - {service.status}")
# List all services in subscription
all_services = client.services.list_by_subscription()
for service in all_services:
print(f"Subscription Service: {service.name} in {service.location}")Delete search services and clean up associated resources.
def delete(
resource_group_name: str,
search_service_name: str,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> None:
"""
Delete a search service and all its data.
Parameters:
resource_group_name (str): Resource group name
search_service_name (str): Search service name to delete
client_request_id (str, optional): Client-generated request ID
Raises:
ResourceNotFoundError: Service does not exist
"""Check if a search service name is available before attempting to create the service.
def check_name_availability(
name: str,
*,
client_request_id: Optional[str] = None,
**kwargs
) -> CheckNameAvailabilityOutput:
"""
Check if a search service name is available.
Parameters:
name (str): Service name to check (2-60 chars, alphanumeric and hyphens)
client_request_id (str, optional): Client-generated request ID
Returns:
CheckNameAvailabilityOutput: Availability status and reason if unavailable
"""Usage Example:
from azure.mgmt.search.models import CheckNameAvailabilityInput
# Check name availability
availability = client.services.check_name_availability("my-unique-search-service")
if availability.is_name_available:
print("Name is available")
else:
print(f"Name unavailable: {availability.reason} - {availability.message}")Upgrade search services to the latest version for new features and improvements.
def begin_upgrade(
resource_group_name: str,
search_service_name: str,
**kwargs
) -> LROPoller[SearchService]:
"""
Upgrade a search service to the latest version available.
Parameters:
resource_group_name (str): Resource group name
search_service_name (str): Search service name
Returns:
LROPoller[SearchService]: Long-running operation for service upgrade, returns updated service
Raises:
ResourceNotFoundError: Service does not exist
HttpResponseError: Upgrade not available or operation failed
"""Usage Example:
# Check if upgrade is available and upgrade the service
try:
# Start the upgrade operation
upgrade_operation = client.services.begin_upgrade(
resource_group_name="my-resource-group",
search_service_name="my-search-service"
)
print("Upgrade started. This may take several minutes...")
# Wait for the upgrade to complete
upgraded_service = upgrade_operation.result()
print(f"Upgrade completed successfully")
print(f"Service version updated: {upgraded_service.name}")
except HttpResponseError as e:
if e.status_code == 409:
print("Service is already at the latest version")
else:
print(f"Upgrade failed: {e.message}")Complete search service configuration and status information.
class SearchService:
"""
Azure Search service configuration and status.
Attributes:
id (str): Fully qualified resource ID
name (str): Service name
type (str): Resource type
location (str): Azure region
tags (Dict[str, str]): Resource tags
identity (Identity): Managed identity configuration
sku (Sku): Pricing tier and capacity
replica_count (int): Number of search replicas (1-12)
partition_count (int): Number of search partitions (1-12)
hosting_mode (HostingMode): Hosting mode configuration
public_network_access (PublicNetworkAccess): Public network access
status (SearchServiceStatus): Current service status
status_details (str): Additional status information
provisioning_state (ProvisioningState): Resource provisioning state
network_rule_set (NetworkRuleSet): Network access rules
encryption_with_cmk (EncryptionWithCmk): Customer-managed key encryption
disable_local_auth (bool): Local authentication disabled
auth_options (DataPlaneAuthOptions): Authentication options
data_exfiltration_protection (SearchDataExfiltrationProtection): Data protection
semantic_search (SearchSemanticSearch): Semantic search capability
private_endpoint_connections (List[PrivateEndpointConnection]): Private endpoints
shared_private_link_resources (List[SharedPrivateLinkResource]): Shared private links
"""Partial update model for modifying existing services.
class SearchServiceUpdate:
"""
Partial updates for existing search service.
Attributes:
tags (Dict[str, str]): Updated resource tags
sku (Sku): Updated pricing tier
replica_count (int): Updated replica count
partition_count (int): Updated partition count
hosting_mode (HostingMode): Updated hosting mode
public_network_access (PublicNetworkAccess): Updated network access
network_rule_set (NetworkRuleSet): Updated network rules
identity (Identity): Updated managed identity
encryption_with_cmk (EncryptionWithCmk): Updated encryption settings
disable_local_auth (bool): Updated local auth setting
auth_options (DataPlaneAuthOptions): Updated auth options
data_exfiltration_protection (SearchDataExfiltrationProtection): Updated protection
semantic_search (SearchSemanticSearch): Updated semantic search
"""Result of name availability check.
class CheckNameAvailabilityOutput:
"""
Name availability check result.
Attributes:
is_name_available (bool): Whether the name is available
reason (UnavailableNameReason): Reason if unavailable
message (str): Detailed message about availability
"""
class UnavailableNameReason(str, Enum):
"""Reasons why a name might be unavailable."""
INVALID = "invalid"
ALREADY_EXISTS = "already_exists"class SearchServiceStatus(str, Enum):
"""Search service status values."""
RUNNING = "running"
PROVISIONING = "provisioning"
DELETING = "deleting"
DEGRADED = "degraded"
DISABLED = "disabled"
ERROR = "error"
class ProvisioningState(str, Enum):
"""Resource provisioning states."""
SUCCEEDED = "succeeded"
PROVISIONING = "provisioning"
FAILED = "failed"
class HostingMode(str, Enum):
"""Service hosting modes."""
DEFAULT = "default"
HIGH_DENSITY = "high_density"Install with Tessl CLI
npx tessl i tessl/pypi-azure-mgmt-search