在Azure搜索上创建CosmosDb数据源

时间:2019-04-03 12:38:39

标签: azure-search

我们正在尝试在Azure搜索中创建CosmosDb数据源,以便以后使用索引器连接到它。

但是,当尝试创建数据源时,我收到了一条不带代码的神秘错误消息:

{
    "error": {
        "code": "",
        "message": "The request is invalid. Details: dataSource : Cannot create an abstract class.\r\n"
    }
}

这是发送到天蓝色搜索的PUT请求(api-key和连接字符串已验证为正确):

{
    "name": "datasourceName",
    "description": "Data source on CosmosDb collection x and partition y",
    "type": "documentdb",
    "credentials": {
        "connectionString": "***"
    },
    "container": {
        "name": "collectionName",
        "query": "SELECT * FROM c WHERE c.Culture = 'y' AND c.Id LIKE 'prefix%'"
    },
    "dataChangeDetectionPolicy": {
        "highWaterMarkColumnName": "_ts"
    }
}

用于该请求的URL是:

https://<servicename>.windows.net/datasources/<datasourceName>?api-version=2017-11-11-Preview

我在文档中找不到有关创建数据源响应的任何内容,欢迎提供一些指导。

致谢

3 个答案:

答案 0 :(得分:0)

对于更改检测策略,您需要包括OData type

{
    “ @ odata.type”:“#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy”,
    “ highWaterMarkColumnName”:“ [行版本或last_updated列名]”
}

答案 1 :(得分:0)

post请求中删除dataChangeDetectionPolicy

就像Carey MacDonald在connectionString中所说的那样,请不要忘记添加Abstract base class for data change detection policies部分。

这是快照: enter image description here

答案 2 :(得分:0)

感谢大家的回应。

为了与问题(PUT而不是POST请求保持一致),我发布了答案,因为它是来自先前答案和评论的反馈的组合。

因此添加后:

"@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy"

dataChangeDetectionPolicy json对象(将PUT请求发送到Azure搜索时),并将Database部分添加到connectionString中后,它现在可以工作了。

致谢