Azure 搜索:Blob 元数据字段值未出现在索引数据中

Azure Search : Blob Metadata Field value not appearing in Indexed data

我们已经在 Block Blob 上设置了元数据,并且能够验证 Key/Value 正确标记在 Blob 上。

在索引中定义的许多字段中,只有一个字段值 (PromotionId) 没有出现在索引数据中,这可以通过 "Search explorer" 执行搜索来确认。

这个字段实际上已经映射到索引器中的键"ID"。

并且已在Index中定义。

为什么这个特定字段的值没有出现在索引中?其余所有元数据字段都按预期出现在索引中。

字段映射无效,因为 "ID" 被指定为 sourceFieldName,但源 Blob 上没有 ID 属性,因为它只存在于您定义的索引中。

这可能有点令人困惑,因为它的行为就像有一个 "ID" 属性,因为 "ID" 字段是在没有字段映射的情况下填充的。但是,这是因为当没有指定文档键的字段映射时,Azure 搜索会自动将 "metadata_storage_path" 映射到作为文档键的任何字段。此行为是 documented here.

如果您希望 PromotionId 像 ID 字段一样成为文档路径,您可以将 PromotionId 字段映射的 sourceFieldName 更改为 "metadata_storage_path"。如果你也想进行 base64 编码,你也可以将 fieldMappingFunction 添加到字段映射中。