我正在尝试运行批处理操作以合并对现有Azure搜索索引的某些更改,但是我一直遇到此错误:
{Microsoft.Rest.Azure.CloudException: The request is invalid. Details: parameters : Object reference not set to an instance of an object.
这是我的代码的片段:
public static void UploadData<T>(List<T> data, ISearchIndexClient indexClient) where T : class
{
int totalFailedToIndex = 0;
int totalPassedToIndex = 0;
for (int i = 0; i < data.Count; i = i + 500)
{
var stBatch = data.Skip(i).Take(500).ToList();
// Insert the data.
var serviceTreeBatch = IndexBatch.Merge(stBatch);
try
{
var index = indexClient.Documents.Index(serviceTreeBatch);
totalPassedToIndex += index.Results.Count();
}
catch (IndexBatchException e)
{
totalFailedToIndex += e.IndexingResults.Where(f => !f.Succeeded).Count();
}
catch(Exception e)
{
continue;
}
}
}
我以前从未见过此错误,而且似乎无法在线找到任何有关此错误的信息。任何帮助都将不胜感激!
编辑: 这是我传入的Type T的示例。ProjectId是这些索引项的键。同样重要的是要注意,该版本没有所有索引值(这是一个合并,因此我仅上载可能随键一起更改的值)。我想知道丢失的值是否是导致失败的原因?
public class IndexItemModel
{
/// <summary>
/// Unique ProjectId
/// </summary>
public string ProjectId { get; set; }
public string RepositoryId { get; set; }
public IEnumerable<string> Repository_Users { get; set; }
public string Repository_UsersString { get; set; }
}
答案 0 :(得分:0)
此问题是由两个单独的问题引起的:
[SerializePropertyNamesAsCamelCase]
属性。如果其他人遇到此无用的错误消息,请仔细检查您的字段名称在Index API和索引定义之间是否匹配。抱歉,此错误给您带来的不便。