Azure 认知搜索 int 到 Edm.String 字段问题
Azure Cognitive Search int to Edm.String field issues
我在尝试将数据添加到我的 Azure 认知搜索索引时遇到问题。正在使用 python 脚本从 SQL 服务器 table 读取数据。该脚本使用 azure 搜索 sdk 中的 SearchIndexClient 将其发送到索引。
问题出在将 Python“int”值发送到 Edm.String 类型的搜索索引字段时。下面的 link 似乎表明这应该是可能的。任何数字类型都可以进入 Edm.String.
但是我得到这个错误:
无法将文字“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 值的行并且搜索索引 table 字段是 Edm.String,我们会得到错误。
Cannot convert the literal '0' to the expected type 'Edm.String'.
感谢您提供代码片段。当使用 Indexer 填充索引时,数据类型映射 link 适用。
索引器提供了一种方便的机制,可以将文档从源数据源加载到索引中。他们执行概述的映射 here by default or can take in an optional fieldMappings。
对于手动更新索引的代码片段,当源和目标之间存在类型不匹配时,将由 casting/converting 等用户处理。在拥有字典后的代码片段中,您可以在将批次上传到 Index
之前使用 str() 将 int 转换为字符串
source_table_row[column_name] = str(source_table_row[column_name])
这是一个python sample创建索引器来更新索引
我在尝试将数据添加到我的 Azure 认知搜索索引时遇到问题。正在使用 python 脚本从 SQL 服务器 table 读取数据。该脚本使用 azure 搜索 sdk 中的 SearchIndexClient 将其发送到索引。
问题出在将 Python“int”值发送到 Edm.String 类型的搜索索引字段时。下面的 link 似乎表明这应该是可能的。任何数字类型都可以进入 Edm.String.
但是我得到这个错误:
无法将文字“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 值的行并且搜索索引 table 字段是 Edm.String,我们会得到错误。
Cannot convert the literal '0' to the expected type 'Edm.String'.
感谢您提供代码片段。当使用 Indexer 填充索引时,数据类型映射 link 适用。
索引器提供了一种方便的机制,可以将文档从源数据源加载到索引中。他们执行概述的映射 here by default or can take in an optional fieldMappings。
对于手动更新索引的代码片段,当源和目标之间存在类型不匹配时,将由 casting/converting 等用户处理。在拥有字典后的代码片段中,您可以在将批次上传到 Index
之前使用 str() 将 int 转换为字符串source_table_row[column_name] = str(source_table_row[column_name])
这是一个python sample创建索引器来更新索引