Azure Search 16MB限制适用场景及.NET SDK限制咨询
Azure Search 16MB限制的适用场景解析
这是个非常有意思的发现!我来帮你理清Azure Search中16MB限制的具体适用规则,以及.NET SDK的相关情况:
一、16MB限制的适用边界
文档里提到的“单个文档批次最大16MB JSON”是有前提条件的,并非所有场景都适用:
- 针对包含可搜索字段的文档:如果你的文档中存在至少一个设置为
searchable: true的字段(这类字段需要被分词、建立索引),那么单个文档的JSON总大小不能超过16MB,同时单个可搜索Edm.String字段的内容大小也不能超过16MB——这两个限制只要触发一个就会报错。 - 针对仅含不可搜索字段的文档:如果你的所有字段都设置为
searchable: false(比如仅用于存储、检索的纯文本字段),那么单个文档的大小限制会大幅放宽(目前官方允许的上限是100MB),单个不可搜索Edm.String字段的内容也可以远超过16MB,就像你测试的50MB字符串成功上传的情况。
从你的测试结果反推,你的body2字段应该是配置了searchable: false,所以绕过了16MB的限制。
二、关于.NET SDK的限制
.NET SDK本质上是Azure Search REST API的封装,所以它的限制和REST API完全一致——不会有额外的限制,也无法绕过REST API的规则。你用.NET SDK上传文档时,同样遵循上面提到的两种场景的限制。
你的测试案例参考
执行的PowerShell脚本
$headers = @{ 'api-key' = '<API Key>' 'Content-Type' = 'application/json' 'Accept' = 'application/json' } $body = @" { "value": [ { "@search.action": "upload", "id":"ddf56362-378d-481f-9313-7b8f9cd99999", "body2":"<50 MB long string>" } ] }"@ $url = "https://<index-name>.search.windows.net/indexes/test-index/docs/index?api-version=2019-05-06" Invoke-RestMethod -Uri $url -Headers $headers -Method Post -Body $body | ConvertTo-Json
响应结果
{ "key": "ddf56362-378d-481f-9313-7b8f9cd99999", "status": true, "errorMessage": null, "statusCode": 200 }
内容的提问来源于stack exchange,提问作者Sumit Talesara
相关产品推荐
相关产品推荐

