我的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?
答案 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);