You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure AI Search向量存储导入报错:无法转换为Edm.String

Azure AI Search导入文档类型转换错误排查与解决

问题场景

已成功创建Azure AI Search索引,代码如下:

# Define the index fields
client = SearchIndexClient(endpoint, credential)
fields = [
  SimpleField(name="id", type=SearchFieldDataType.String, key=True, sortable=True, 
                   filterable=True, facetable=True),
  SimpleField(name="originalbalancedue", type=SearchFieldDataType.Double, 
                   sortable=True, filterable=True, facetable=True),
  SimpleField(name="adjustedbalancedue", type=SearchFieldDataType.Double, 
                   sortable=True, filterable=True, facetable=True),
  SimpleField(name="feeamount", type=SearchFieldDataType.Double, sortable=True, 
                   filterable=True, facetable=True),
  SearchableField(name="result", type=SearchFieldDataType.Double, sortable=True, 
                   filterable=True)
]

index = SearchIndex(name=index_name, fields=fields, vector_search=vector_search)
result = client.create_or_update_index(index)
print(f'{result.name} created')

执行文档导入代码时:

with open('worthiness_with_result_small.json', 'r') as f:
    content = f.read().strip()
    if content:
        documents = json.loads(content)
        print(f"loaded {len(documents)} documents")
    else:
        print("The file is empty.")
search_client = SearchClient(endpoint=endpoint, index_name=index_name, 
credential=credential)
result = search_client.upload_documents(documents)
print(f"Uploaded {len(documents)} documents") 

出现如下错误:

HttpResponseError: () The request is invalid. Details: Cannot convert the literal '5759.12' to the expected type 'Edm.String'.
Code: 
Message: The request is invalid. Details: Cannot convert the literal '5759.12' to the expected type 'Edm.String'.

导入的JSON数据:

[{"id":"425001","originalbalancedue":1684269.59,"adjustedbalancedue":1683369.59,"feeamount":6659.1199999999998900,"result":5759.1199999999998900}]

错误原因

SearchableField类型不支持直接定义SearchFieldDataType.Double类型。当用SearchableField声明字段时,Azure AI Search默认期望该字段为字符串类型(Edm.String),但导入的result字段是数值类型,因此触发类型转换错误。

解决方案

将result字段的定义从SearchableField改为SimpleField,并添加searchable=True参数,这样既保留数值类型,又能让字段支持搜索:

修改后的索引字段定义代码:

# Define the index fields
client = SearchIndexClient(endpoint, credential)
fields = [
  SimpleField(name="id", type=SearchFieldDataType.String, key=True, sortable=True, 
                   filterable=True, facetable=True),
  SimpleField(name="originalbalancedue", type=SearchFieldDataType.Double, 
                   sortable=True, filterable=True, facetable=True),
  SimpleField(name="adjustedbalancedue", type=SearchFieldDataType.Double, 
                   sortable=True, filterable=True, facetable=True),
  SimpleField(name="feeamount", type=SearchFieldDataType.Double, sortable=True, 
                   filterable=True, facetable=True),
  # 修改此处:用SimpleField并开启searchable
  SimpleField(name="result", type=SearchFieldDataType.Double, sortable=True, 
                   filterable=True, searchable=True)
]

index = SearchIndex(name=index_name, fields=fields, vector_search=vector_search)
result = client.create_or_update_index(index)
print(f'{result.name} created')

修改后重新创建索引,再执行文档导入操作即可解决问题。


内容的提问来源于stack exchange,提问作者VictorGram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:00:13