【问题标题】:Cosmos DB set Indexing Policy through Azure RMCosmos DB 通过 Azure RM 设置索引策略
【发布时间】:2023-03-19 04:20:01
【问题描述】:

我正在尝试通过 Azure RM powershell 脚本将 Cosmos DB 帐户的索引策略设置为无,但没有成功。

  $tableProperties = @{
    resource=@{ id=$table; indexingPolicy= @{indexingMode="none"; automatic = "false"; includedPaths = "[]"; excludedPaths = "[]" }  };
     options=@{ Throughput= 500 }
}

  Set-AzureRmResource -ResourceType $tableResourceType `
        -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
        -Name $tableResourceName -PropertyObject $tableProperties -Force 

Cosmos DB 中的索引策略节点

{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
    {
        "path": "/*"
    }
],
"excludedPaths": [
    {
        "path": "/\"_etag\"/?"
    }
]

}

更新: 试过了:

$containerResourceType = "Microsoft.DocumentDb/databaseAccounts/tables"
$containerName = $destinationStorageName+"/"+ $table

$containerGet = Get-AzResource -ResourceType $containerResourceType `
    -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
    -Name $containerName | Select-Object -ExpandProperty Properties

$containerProperties = @{
    "resource"=@{
        "id"=$containerGet.resource.id; 
        "indexingPolicy"=@{"indexingMode"="none"}
    }
}

Set-AzResource -ResourceType $containerResourceType `
-ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
-Name $containerName -PropertyObject $containerProperties -Force 

运气不好

【问题讨论】:

    标签: powershell azure-cosmosdb azure-rm


    【解决方案1】:

    对于索引策略,您只需将 indexingMode 设置为 none。 Cosmos 中的子资源也不支持 PATCH,因此对于资源上的任何 PUT,您需要包含已设置的任何其他属性,包括所需的 partitionKey。请参见下面的示例。

    更新:此示例使用 AzResource,因为 AzureRM 已被弃用。

    $apiVersion="2019-08-01"
    $containerResourceType = "Microsoft.DocumentDb/databaseAccounts/sqlDatabases/containers"
    $resourceGroupName="myResourceGroup"
    $containerName = "mycosmosaccount/myDatabase/myContainer"
    
    $containerGet = Get-AzResource -ResourceType $containerResourceType `
        -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
        -Name $containerName | Select-Object -ExpandProperty Properties
    
    $containerProperties = @{
        "resource"=@{
            "id"=$containerGet.resource.id; 
            "partitionKey"=$containerGet.resource.partitionKey;
            "indexingPolicy"=@{"indexingMode"="none"}
        }
    }
    
    Set-AzResource -ResourceType $containerResourceType `
        -ApiVersion $apiVersion -ResourceGroupName $resourceGroupName `
        -Name $containerName -PropertyObject $containerProperties -Force 
    

    【讨论】:

    • 嗨,马克,感谢您的回复。我使用的是 tableAPI 而不是 SQL。我尝试了后来在答案中更新的脚本,但没有运气:(
    • 这可以解释,因为 Table API 没有索引策略。索引策略仅适用于 SQL API。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多