Azure 认知搜索 int 到 Edm.String 字段问题

标签 azure azure-cognitive-search

我在尝试将数据添加到 Azure 认知搜索索引时遇到问题。使用 python 脚本从 SQL Server 表中读取数据。该脚本使用 azure 搜索 sdk 中的 SearchIndexClient 将其发送到索引。

问题在于将 Python“int”值发送到 Edm.String 类型的搜索索引字段时。下面的链接似乎表明这应该是可能的。任何数字类型都可以进入 Edm.String。

https://learn.microsoft.com/en-us/rest/api/searchservice/data-type-map-for-indexers-in-azure-search#bkmk_sql_search

但是我收到此错误:

无法将文字“0”转换为预期类型“Edm.String”。

我是否误解了文档?通过 Azure 搜索 SDK,python int 与 SQL Server int 不同吗?

我正在使用 pyodbc 连接到 Azure Synapse 数据库。使用游标循环检索行。这基本上就是我正在做的事情......

search_client = SearchIndexClient(env.search_endpoint,
  env.search_index, 
  SearchApiKeyCredential(env.search_api_key),
  logging_enable=True)
conn = pyodbc.connect(env.sqlconnstr_synapse_connstr, autocommit=True)
query = f"SELECT * FROM [{env.source_schema}].[{source_table}]"
cursor = conn.cursor()
cursor.execute(query)

source_table_columns = [source_table_column[0] for source_table_column in cursor.description]
rows = []
for source_table_values in cursor.fetchmany(MAX_ROWS_TO_FETCH):
   source_table_row = dict(zip(source_table_columns,
                               source_table_values))
   rows.append(source_table_row)

upload = search_client.upload_documents(documents=rows)

如果该行包含具有 int 值的行并且搜索索引表字段是 Edm.String,我们会收到错误。

无法将文字“0”转换为预期类型“Edm.String”。

最佳答案

感谢您提供代码片段。当使用 Indexer 时,数据类型映射链接适用。填充索引。

索引器提供了一种方便的机制来将文档从源数据源加载到索引中。他们执行概述的映射 here默认情况下或可以采用可选的 fieldMappings .

在手动更新索引的代码片段中,当源和目标之间存在类型不匹配时,用户将通过强制转换/转换等方式来处理。在获得字典后的代码片段中,您可以在将批处理上传到索引之前使用 str() 将 int 转换为字符串

source_table_row[列名] = str(source_table_row[列名])

这是一个python sample创建一个索引器来更新索引

关于Azure 认知搜索 int 到 Edm.String 字段问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71802722/

相关文章:

c# - 从 Azure 表存储中检索行

azure - 如何使用 Azure 数据工厂 V2 将 JSON 数组列从启用 Azure Cosmos DB 的 Mongo DB 文档复制到 Snowflake 列(字符串/变体)?

c# - 将 blob 上传到具有指定 ContentType 的 Azure Blob 存储并同时覆盖(.NET v12 SDK)?

azure - 是否可以使用 Azure 搜索 SDK 创建新的 Azure 搜索服务?

azure - 如何为 Azure 认知服务实时提取文本?

azure-cognitive-search - 我是否必须将 PDF 文件存储在 Azure Blob 存储中以进行 OCR 并为其建立索引?

linux - 如何使用PowerShell命令Get-AzMetric获取Azure Linux VM guest 指标?

azure - Azure 搜索上的 CORS 问题

search - Azure Blob 文档 - 全文搜索

c# - Azure SQLite 插入