所以,我有一个Id
字段的对象;当我对其进行索引时,生成的文档具有预期的_source.id
字段,但_id
字段与_source.id
具有相同的值。
例如,我有这个对象:
var obj = new Obj {
...
Id = 'some_value',
...
};
索引之后,我看到ES文档是这样的:
{
...
"_id: "some_value",
...
"_source" : {
...
"id" : "some_value",
...
}
}
问题是:是否有可能以某种方式禁用此行为?比如,如何让Elasticsearch生成_id
的值(如果可能的话)?
答案 0 :(得分:2)
这是一项称为Id inference的功能。如果您不希望NEST不这样做,我建议
Id
属性重命名为ElasticsearchType
,并将不存在的属性名称分配给IdProperty
[ElasticsearchType(IdProperty = "do_not_infer_id")]
public class MyDocument
{
public int Id { get; set; }
}