未找到POCO Id属性

时间:2014-09-29 10:10:13

标签: c# elasticsearch nest

我的poco类型定义如下:

 [Elastictype(Name="doc", IdProperty="Id")]
 public class Doc{
      public string Id;
      public string Name;
      ....
 }

然而,它仍然在我的.Index()请求中生成随机哈希id,尽管id属性确实保存在文档中。

我尝试使用和不使用Elastictype定义,结果仍然相同。

我能够让它工作的唯一方法是明确设置在.Index请求中定义id,我无法在批量操作中找到它。有人能告诉我为什么我的POCO ID不被NEST识别以及如何启用它?或者如何在批量请求中明确设置ID?

1 个答案:

答案 0 :(得分:1)

您可以在批量操作期间明确设置ID。我过去曾成功使用以下内容:

  var docs = new List<Doc>();
  var bulkDescriptor = new BulkDescriptor;

  // assumes that docs has been populated...
  foreach(var doc in docs)
  {
      bulkDescriptor.Index<Doc>(op => op.Object(doc).Id(doc.Id));
  }

  //assumes using an already defined ElasticsearchClient
  var response = Client.Bulk(descriptor => bulkDescriptor);