2014-09-29 81 views
0

我已经定义,像这样我的POCO类型的类:POCO Id属性没有被发现

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

但是它仍然产生一个随机哈希ID中,而不是我的.index()请求,但id属性也得到保存在文件中。

我试过,没有Elastictype定义,结果仍然相同。

我能够得到它的唯一方法是通过明确设置.Index请求中的ID来定义,这在我无法在批量操作中找到。有人能告诉我为什么我的POCO ID不被NEST识别并且如何启用它?或者如何在我的批量请求中显式设置一个ID?

+0

Constrol怪胎我想这是因为你使用'fields'而不是'properties'您可以张贴在这个GitHub的问题,以便我们可以讨论在这方面支持? – 2014-10-13 09:38:10

回答

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); 
+0

实际上能够找出这一个 - Bulk w/id,但我仍然想知道为什么属性初始值设定项不能识别id属性 – 2014-09-30 16:31:44