如何使用Azure Search Indexer提取Azure Table JSON列的离散字段
Azure Table JSON列字段提取最优方案
针对Azure Table存储中存储非数组型JSON字符串的列,在Azure AI Search(原Azure Search)索引构建阶段提取离散字段,根据场景复杂度可选择以下两种最优方案:
方案1:索引器字段映射+JSON路径函数(简单场景首选,无额外开销)
适用场景:JSON结构扁平、无需对提取值做二次处理的场景,无需额外配置技能集,仅靠索引器自带能力即可实现,无额外成本。
操作要点:
- 预先在搜索索引中创建和JSON属性对应类型的目标字段
- 在索引器的
fieldMappings配置块中,对每个要提取的属性配置字段映射,调用内置jsonPath函数指定属性路径 - 示例配置:假设存储JSON的列名为
JsonColumn,JSON结构为{"UserName":"Jack","Age":28,"IsVerified":true},字段映射配置如下:
"fieldMappings": [ { "sourceFieldName": "JsonColumn", "targetFieldName": "userName", "mappingFunction": { "name": "jsonPath", "parameters": { "path": "$.UserName" } } }, { "sourceFieldName": "JsonColumn", "targetFieldName": "age", "mappingFunction": { "name": "jsonPath", "parameters": { "path": "$.Age" } } }, { "sourceFieldName": "JsonColumn", "targetFieldName": "isVerified", "mappingFunction": { "name": "jsonPath", "parameters": { "path": "$.IsVerified" } } } ]
注意:JSON路径以$表示根节点,属性名大小写需与JSON实际存储的键完全匹配。
方案2:技能集JSON解析技能(复杂场景适用)
适用场景:JSON存在嵌套结构、提取后需要进行文本清洗/实体识别等额外处理、或提取字段需要供给其他技能调用的场景。
操作要点:
- 在搜索服务的技能集中添加
#Microsoft.Skills.Util.JsonParsingSkill,输入为存储JSON的表列,输出为解析后的结构化对象 - 配置索引器的
outputFieldMappings,将解析后的结构化对象的对应属性映射到搜索索引字段 - 示例配置片段:
{ "@odata.type": "#Microsoft.Skills.Util.JsonParsingSkill", "context": "/document", "inputs": [ { "name": "json", "source": "/document/JsonColumn" } ], "outputs": [ { "name": "structuredData", "targetName": "parsedJsonData" } ] }
注意:解析后的结构化对象可直接在技能集上下文被其他技能调用,无需重复解析。
内容的提问来源于stack exchange,提问作者Michael S. Scherotter
相关产品推荐
相关产品推荐

