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 添加到字段映射中。
我们已经在 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 添加到字段映射中。