CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-azure-mgmt-search

Microsoft Azure Search Management Client Library for Python

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

service-management.mddocs/

Search Service Management

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.

Capabilities

Service Creation and Updates

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
)

Service Retrieval

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
    """

Service Listing

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}")

Service Deletion

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
    """

Name Availability Check

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}")

Service Upgrade

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}")

Data Models

SearchService

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
    """

SearchServiceUpdate

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
    """

CheckNameAvailabilityOutput

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"

Service Status Enums

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

docs

index.md

key-management.md

network-security.md

private-networking.md

service-management.md

usage-monitoring.md

tile.json