【发布时间】:2020-06-15 06:57:24
【问题描述】:
我们已经在块 Blob 上设置了元数据,并且能够验证在 Blob 上正确标记的键/值。
在索引中定义的许多字段中,只有一个字段值(PromotionId)没有出现在索引数据中,这可以通过“搜索资源管理器”执行搜索来确认。
为什么这个特定字段的值没有出现在索引中?其余所有元数据字段都按预期出现在索引中。
【问题讨论】:
我们已经在块 Blob 上设置了元数据,并且能够验证在 Blob 上正确标记的键/值。
在索引中定义的许多字段中,只有一个字段值(PromotionId)没有出现在索引数据中,这可以通过“搜索资源管理器”执行搜索来确认。
为什么这个特定字段的值没有出现在索引中?其余所有元数据字段都按预期出现在索引中。
【问题讨论】:
字段映射不起作用,因为“ID”被指定为 sourceFieldName,但源 Blob 上没有 ID 属性,因为它只存在于您定义的索引上。
这可能有点令人困惑,因为它的行为就像有一个“ID”属性,因为“ID”字段是在没有字段映射的情况下填充的。但是,这是因为当未指定文档键的字段映射时,Azure 搜索会自动将“metadata_storage_path”映射到作为文档键的任何字段。这种行为是documented here。
如果您希望 PromotionId 像 ID 字段一样是文档路径,您可以将 PromotionId 字段映射的 sourceFieldName 更改为“metadata_storage_path”。如果您还想进行 base64 编码,您也可以将 fieldMappingFunction 添加到字段映射中。
【讨论】: