我在azure搜索中有一个索引,它通过Change Tracking同步到SQL服务器表。
我在对表格进行一些更改后随机开始收到此错误(但并非总是如此,我似乎无法一直复制它):
[
{
"key": null,
"errorMessage": "Document key cannot be missing or empty."
}
]
我检查了我的表,Azure搜索使用该列的列中没有空值(由sql not null约束强制执行)。除了删除索引并从头开始重新创建它之外,没有其他解决方案。甚至不删除所有文档并再次运行索引器就可以消除错误。
[更新 - 已解决]
当Eugene的回答突出显示时,问题是Azure Search跟踪的sql表有一个未映射到Azure搜索键的主键(我们使用另一个唯一列作为azure键代替)。使用" SQL集成更改跟踪策略"模式,因为索引器无法引用已删除的行(如果在删除sql跟踪表中的某些行后重新发出索引操作,则索引器将失败。)
将sql表的主键设置为与索引的azure键相同后,即使在删除时,一切似乎都能顺利运行。
答案 0 :(得分:1)
在这种情况下,搜索索引的关键字段与表中的主键列不同。在这种情况下,不支持使用SQL集成更改跟踪策略进行删除跟踪,因为更改表不包含映射到索引键字段的列的值。但是,插入和更新将正常工作。
如果可能,请考虑使表和索引键相同。
答案 1 :(得分:0)
pk列中可能有空值, 在azure sql中删除,删除table_name,其中pk =''