对象内的id字段,弹性搜索的NEST

时间:2018-03-28 18:42:21

标签: c# elasticsearch nest

所以,我有一个Id字段的对象;当我对其进行索引时,生成的文档具有预期的_source.id字段,但_id字段与_source.id具有相同的值。

例如,我有这个对象:

var obj = new Obj {
    ...
    Id = 'some_value',
    ...
};

索引之后,我看到ES文档是这样的:

{
    ...
    "_id: "some_value",
    ...
    "_source" : {
        ...
        "id" : "some_value",
        ...
    }
}

问题是:是否有可能以某种方式禁用此行为?比如,如何让Elasticsearch生成_id的值(如果可能的话)?

1 个答案:

答案 0 :(得分:2)

这是一项称为Id inference的功能。如果您不希望NEST不这样做,我建议

  • 将POCO上的Id属性重命名为
  • 将POCO归为ElasticsearchType,并将不存在的属性名称分配给IdProperty
[ElasticsearchType(IdProperty = "do_not_infer_id")]
public class MyDocument
{
    public int Id { get; set; }
}