【问题标题】:POCO Id property not being found未找到 POCO Id 属性
【发布时间】:2014-09-30 09:20:50
【问题描述】:

我的 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?

【问题讨论】:

  • 控制怪胎,我认为这是因为您使用的是fields 而不是properties,您可以在此发布一个 github 问题,以便我们在那里讨论支持此问题吗?

标签: c# elasticsearch nest


【解决方案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);

【讨论】:

  • 实际上能够弄清楚这一点-带 ID 的批量,但我仍然想知道为什么属性初始化程序无法识别 idproperty
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 2017-07-20
  • 2015-12-07
  • 2019-01-26
  • 2013-10-13
  • 2017-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多