如何使用 REST 创建 Azure 搜索索引器 API

How to create an Azure Search indexer using the REST API

由于 Azure 门户中的 bug,我需要使用 REST API 以编程方式创建 Azure 认知搜索数据源、索引和索引器。创建数据源或索引没有问题,但 POST 下面的请求 returns 出现以下错误。

{
    "error": {
        "code": "",
        "message": "The request is invalid. Details: dataSource : A resource without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified.\r\n"
    }
}

以下 POST 请求是在此 page 上找到的修改示例,其中变量替换为服务名称、管理密钥、dataSourceName 和 targetIndexName 的正确名称。

POST请求(使用邮递员)

POST https://SERVICENAME.search.windows.net/indexers?api-version=2019-05-06
Content-Type: application/json
api-key: ADMINKEY

{
  "name" : "my-json-indexer",
  "dataSourceName" : "BLOBDATASOURCE",
  "targetIndexName" : "TARGETINDEX",
  "schedule" : { "interval" : "PT2H" },
  "parameters" : { "configuration" : { "parsingMode" : "json" } }
}

似乎在您创建数据源时未提供类型 属性。

这是两个请求:

创建数据源

POST https://[service name].search.windows.net/datasources?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key for Azure Cognitive Search]

{
    "name" : "my-blob-datasource",
    "type" : "azureblob",
    "credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" },
    "container" : { "name" : "my-container", "query" : "optional, my-folder" }
}  

创建索引器

POST https://[service name].search.windows.net/indexers?api-version=2019-05-06
Content-Type: application/json
api-key: [admin key for Azure Cognitive Search]

{
  "name" : "my-json-indexer",
  "dataSourceName" : "my-blob-datasource",
  "targetIndexName" : "my-target-index",
  "schedule" : { "interval" : "PT2H" },
  "parameters" : { "configuration" : { "parsingMode" : "json" } },
  "fieldMappings" : [
    { "sourceFieldName" : "/article/text", "targetFieldName" : "text" },
    { "sourceFieldName" : "/article/datePublished", "targetFieldName" : "date" },
    { "sourceFieldName" : "/article/tags", "targetFieldName" : "tags" }
    ]
}