是否可以将弹性文档ID值映射到映射中的字段

时间:2016-05-12 06:38:14

标签: c# elasticsearch nest elasticsearch-net elasticsearch-2.0

我知道可以映射您的个人ID,以便文档ID与您的个人ID相同,但可以通过其他方式进行操作吗?

如何将文档ID值映射到映射中的属性?

答案可能最好使用C#NEST库,但不是必需的,谢谢。

2 个答案:

答案 0 :(得分:2)

我不知道任何可以修改索引到ES的源的功能。

(已弃用)transform feature可以在索引时添加新的任意字段,但不会修改源,这意味着在检索结果时,您不会获得创建的字段。

我建议您创建自己的ID并将其分配到MyDocId字段,不要让ES生成它们。

请注意,在ES 5中,我们将有一种名为Ingest node的新类型节点,它将允许定义转换管道,类似于Logstash过滤器可以执行的操作。此时,您将能够使用set processor来设置/创建任意字段并实现您想要的目标:

{
  "set": {
    "field": "MyDocId",
    "value": "_id"
  }
}

答案 1 :(得分:2)

NEST目前不会将生成的ID映射到POCO的属性上;您可以使用

response.Hits元数据手动分配ID
var response = client.Search<Poco>();

var pocos = response.Hits.Select(hit =>
    {
        hit.Source.Id = h.Id;
        return hit.Source;
    }).ToList();

This was discussed again in January我们决定保持当前的实施; POCO映射到Elasticsearch中的_source