如何用Azure.Search.Documents .NET SDK填充运行时新增的ACS字段?
使用Azure.Search.Documents .NET SDK填充动态添加的搜索字段
不需要直接发起HTTP调用,.NET SDK完全支持处理这类运行后添加的动态字段,推荐通过JsonExtensionData特性实现字典键值对的自动展开,具体实现如下:
修改实体类结构
给字典字段添加JsonExtensionData特性,SDK序列化时会自动将字典中的键值对转换为搜索文档的顶级字段:
using System.Text.Json.Serialization; using Azure.Search.Documents.Indexes; public class DynamicDocument { [SimpleField(IsKey = true)] public string id { get; set; } [JsonExtensionData] public Dictionary<string, object> attributes { get; set; } }
提交动态字段文档
创建文档实例并填充动态字段后,直接通过SDK的上传接口提交即可:
// 假设已初始化SearchClient实例searchClient var dynamicDoc = new DynamicDocument { id = "doc_001", attributes = new Dictionary<string, object> { ["post_title"] = "动态生成的标题", ["post_content"] = "动态添加的内容字段", ["view_count"] = 120 } }; await searchClient.UploadDocumentsAsync(new[] { dynamicDoc });
注意事项
- 确保目标搜索索引中已提前创建对应动态字段,或者开启了自动字段映射功能(允许索引自动创建匹配类型的字段)
- 字典类型建议使用
Dictionary<string, object>,以兼容字符串、数字等多种数据类型的动态字段
内容的提问来源于stack exchange,提问作者Andy N
相关产品推荐
相关产品推荐

