在 Azure 搜索 ARM 模板中添加索引 creation/configuration

Adding index creation/configuration in a Azure search ARM Template

可以通过 ARM 模板创建 Azure 搜索服务(示例:https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/101-azure-search-create/azuredeploy.json)。

我想知道有没有办法在 ARM 模板(字段、数据源、索引器等)中定义特定索引?

我知道您可以使用 REST 服务来创建和修改索引,但我不想在创建资源组和 Azure 搜索服务后使用单独的 script/application 来处理它。

不可以,您不能在 ARM 模板中创建索引。我之前读过的术语是 ARM 用于管理 Azure 控制平面。

+1 到唐的评论。您将需要使用 REST API or the .NET SDK 创建索引。如果您碰巧使用 PowerShell 创建服务,您可能会发现以下代码很有用,它使用 Invoke-RestMethod 和一组包含索引架构的 .JSON 文件调用 REST API和一些文件。

#------------------------#
# Setting up search index#
#------------------------#
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Content-Type", 'application/json')
$headers.Add("api-key", $searchApiKey)

Write-Host 
Write-Host "Creating Index..."
$schemaFile = "$(Split-Path $MyInvocation.MyCommand.Path)\zipcodes.schema"
$response = Invoke-RestMethod -TimeoutSec 10000 $searchServiceUrl"/indexes/zipcodes2?api-version=2015-02-28-Preview" -Method Put -Headers $headers -Body "$(get-content $schemaFile)"
Write-Host $response

$jsonFile = "$(Split-Path $MyInvocation.MyCommand.Path)\zipcodes1.json"
Write-Host 
Write-Host "Adding Documents from $jsonFile..."
$response = Invoke-RestMethod -TimeoutSec 10000 $searchServiceUrl"/indexes/zipcodes2/docs/index?api-version=2015-02-28-Preview" -Method Post -Headers $headers -Body "$(get-content $jsonFile)"
Write-Host $response

Azure 搜索目前不支持通过 ARM 模板管理索引。如果此功能对您很重要,请在 User Voice 上添加一项以帮助我们确定优先级。