我知道可以映射您的个人ID,以便文档ID与您的个人ID相同,但可以通过其他方式进行操作吗?
如何将文档ID值映射到映射中的属性?
答案可能最好使用C#NEST库,但不是必需的,谢谢。
答案 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
。