c# - 找不到POCO ID属性

标签 c# elasticsearch nest

我有这样定义我的poco类型类:

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

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

无论是否定义了Elastictype,我都尝试过,结果仍然相同。

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

最佳答案

您可以在批量操作期间明确设置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);

关于c# - 找不到POCO ID属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097400/

相关文章:

couchdb - 如何在动态映射过程中将所有标量类型(数字/ bool 值/字符串等)设置为 “string”(使用river插件)

search - 如何使用Symfony 2在多个实体上执行搜索

elasticsearch - 查询elasticsearch可以通过id获取文档,但无法在全部查询中找到它

c# - 字典<string,dynamic>的NEST映射获取空数组

c# - 在 Visual Studio Code for Mac 上找不到任何 CSX 文件

c# - generic 和 double 操作

c# - 替换不区分大小写的正则表达式需要注意什么?

C# PCSC-sharp 发送/接收带有数据的自定义命令

c# - NEST C# - elasticsearch - 电子商务过滤器组合

elasticsearch - 在 ElasticSearch NEST 查询中返回原始 Json