Как создать индексатор поиска Azure с помощью REST API - PullRequest
0 голосов
/ 08 января 2020

Из-за ошибки на портале Azure мне необходимо создать источник данных, индекс и индексатор Azure Cognitive Search программно, используя REST API. Не было проблем с созданием источника данных или индекса, но приведенный ниже запрос POST возвращает следующую ошибку:

{
    "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 является измененным примером, найденным на этой странице , с переменные заменены правильными именами service-name, admin-key, 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" } }
}

1 Ответ

0 голосов
/ 10 января 2020

Похоже, что при создании источника данных свойство type не было предоставлено.

Вот два запроса:

Создать источник данных

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" }
    ]
}
...