正如标题中所描述的,我在创建索引器(同时使用门户Azure和Rest API)时面临一个奇怪的错误。
{
"error": {
"code": "",
"message": "Error with data source: Additional content found in JSON reference object. A JSON reference object should only have a $ref property. Path '$id'. Please adjust your data source definition in order to proceed."
}
}
数据源是通过azure门户创建的,未指定删除或更改策略。
comosdb(MongoDb)中的JSON结构帖子收集
{
"_id": {
"$oid": "....."
},
"author": {
"$ref": "user",
"$id": {
"$oid": "...."
}
},
"_class": "com.community.domain.Post"
}
在索引器定义下面
{
"dataSourceName": "fshco-post",
"targetIndexName": "index",
"fieldMappings": [
{
"sourceFieldName": "_class",
"targetFieldName": "class"
}
],
"parameters": {
"batchSize": 1000,
"maxFailedItems": null,
"maxFailedItemsPerBatch": null
}
}
为了确认问题出在$ref属性上,我使用了一个包含一个文档的集合Post,但是在author字段中没有子属性$ref,并且它被成功地索引了。
我尝试使用技能集ShaperSkill修改$ref命名,但也没有出现相同的错误。之后,我了解到问题可能出在技能集执行阶段之前的数据破解阶段。indexing phases
以下是我使用的定义技能集:
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#1",
"description": null,
"context": "/document",
"inputs": [
{
"name": "refto",
"source": "/document/author/$ref"
},
{
"name": "id",
"source": "/document/author/$id"
}
],
"outputs": [
{
"name": "output",
"targetName": "post_author" --> same name as the index attribute
}
]
}
]
在步进器中
"skillsetName": "skillpostshaper",
"outputFieldMappings": [
{
"sourceFieldName": "/document/post_author",
"targetFieldName": "post_author"
}
],
"有什么明显的我错过了吗"
1条答案
按热度按时间jgovgodb1#
AFAIK,索引字段名不应该以特殊字符开头,如前所述here
使用索引器中的字段Map,我已经完成了一个字段到另一个字段的Map,下面是我遵循的步骤,
1.创建数据源、索引和索引器。
1.在索引中添加了名为ref的新文件。
1.在indexer中,添加了如下所示的字段Map。此处将ref字段Map到名称为HotelName.
的现有字段
1.运行索引器后,能够获取ref字段中的数据。