c# - 对象内的 id 字段,用于 elasticsearch 的 NEST

标签 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 生成值(如果可能)?

最佳答案

这是一个称为 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/

相关文章:

c# - 在方法调用之间缓存了哪些(如果有的话)本地定义的委托(delegate)?

c# - 在托管服务中使用时,asp.net core AppSettings 失败

elasticsearch - 如何按照匹配词的顺序对结果集进行排序

amazon-web-services - ElasticSearch NEST QueryParsingException bool查询不支持过​​滤器

c# - NEST Elasticsearch高级排序

c# - 存储过程需要一个我已经传入的参数

c# - 将文件夹(目录)从一个位置 move 到另一个位置 - 不当行为

elasticsearch - 将术语查询与Or运算符配合使用

elasticsearch - 查询包含嵌套数组 Elasticsearch 中所有值的文档

c# - Nest 7.x 中缺少 SearchDescriptor.Type 方法