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

使用.NET Core控制台程序向Azure Search Index上传文档时覆盖问题

解决Azure Search上传文档列表后仅保留最后一个的问题

出现这个问题的核心原因是你上传的所有文档使用了相同的主键值。Azure Search的IndexDocumentsBatch.Upload操作逻辑是:如果文档的主键在索引中已存在,则执行更新(覆盖)操作;不存在则执行新增。如果5个文档的主键完全重复,最后一个文档会覆盖掉前面所有同主键的文档,最终索引里只剩这一个。

解决步骤:

  • 确认你的Azure Search索引的主键字段:登录Azure门户,找到对应的Search服务和索引,查看索引定义里的主键字段(通常是id,也可能是你自定义的字段)。
  • 检查sampleDocuments集合中每个文档的主键值:确保每个文档的主键都是唯一的,没有重复。
  • 修改文档生成逻辑,保证主键唯一性:
    比如在生成文档时,给每个文档分配唯一的主键值,示例代码如下:
    // 假设你的文档类有Id字段作为主键
    public class SearchDocument
    {
        public string Id { get; set; }
        // 其他字段...
    }
    
    // 在生成sampleDocuments时确保Id唯一
    var sampleDocuments = await GetSampleDocumentsAsync(openAIClient, inputDocuments);
    foreach (var doc in sampleDocuments)
    {
        // 用Guid生成唯一主键,或者根据业务逻辑生成唯一值
        doc.Id = Guid.NewGuid().ToString();
    }
    
    await searchClient.IndexDocumentsAsync(IndexDocumentsBatch.Upload(sampleDocuments));
    
  • 验证结果:上传完成后,调用Search查询所有文档,检查返回的文档数量和主键是否唯一,确认没有覆盖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 14:52:06