2

我知道它可以映射您的个人 ID,以便文档 ID 与您的个人 ID 相同,但是否可以采用其他方式?

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

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

4

2 回答 2

2

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

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

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

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

{
  "set": {
    "field": "MyDocId",
    "value": "_id"
  }
}
于 2016-05-12T07:00:52.573 回答
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();

这在 1 月份再次讨论过,我们决定保留当前的实施;POCO 映射到_sourceElasticsearch 中。

于 2016-05-12T10:38:46.160 回答