所以,我有一个带有 Id
字段的对象;当我对其进行索引时,生成的文档具有预期的 _source.id
字段,但 _id
字段的值与 _source.id
相同.
例如,我有这个对象:
var obj = new Obj {
...
Id = 'some_value',
...
};
建立索引后,看到ES文档是这样的:
{
...
"_id: "some_value",
...
"_source" : {
...
"id" : "some_value",
...
}
}
问题是:是否有可能以某种方式禁用此行为?例如,如何让 Elasticsearch 为 _id
生成值(如果可能)?
最佳答案
这是一个称为 Id inference 的功能.如果您不希望 NEST 这样做,我会推荐其中之一
- 将 POCO 上的
Id
属性重命名为其他名称 - 为 POCO 赋予
ElasticsearchType
属性,并将一个不存在的属性名称分配给IdProperty
[ElasticsearchType(IdProperty = "do_not_infer_id")]
public class MyDocument
{
public int Id { get; set; }
}
关于c# - 对象内的 id 字段,用于 elasticsearch 的 NEST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49541922/