gpt4 book ai didi

.net - 如何使用NEST客户端将Elasticsearch配置为使用AutoMap类型作为动态映射对象的默认模板?

转载 作者:行者123 更新时间:2023-12-02 22:57:53 24 4
gpt4 key购买 nike

我正在将对象动态添加到索引中,因此都使用_default_映射对它们进行了索引。这是有问题的,因为它导致诸如Guid之类的映射为text字段而不是keyword。 NEST客户端提供的AutoMap函数从任何给定的数据类型“自动推断正确”字段,但只有在显式调用时才这样做。有什么方法可以强制_default_映射使用与AutoMap函数相同的模板?还是我需要添加一些其他代码,这些代码循环遍历所有可能的对象类型,并抢先为每种对象创建一个IndexDescriptor

最佳答案

您可以定义index template以将映射应用于新创建的模板

var putIndexTemplateResponse = client.PutIndexTemplate("default", t => t
.Template("*")
.Mappings(m => m
.Map("_default_", tm => tm
.Properties(p => p
.Keyword(k => k
.Name("id")
)
)
)
)
);

这将把任何新创建的索引中的任何类型的 id属性映射为关键字字段。

如果您需要更多基于约定的内容,则可以将 dynamic templates与规则结合使用以确定应如何动态映射添加的字段
var createIndexResponse = client.CreateIndex("index-name", t => t
.Mappings(m => m
.Map("_default_", tm => tm
.DynamicTemplates(d => d
.DynamicTemplate("default", dt => dt
.Match("id")
.MatchMappingType("string")
.Mapping(mm => mm
.Keyword(k => k)
)
)
)
)
)
);

两种方法都在Elasticsearch中设置了映射约定。如果您打算在自己的代码中确定任何约定,例如 using the visitor pattern,您需要明确告知Elasticsearch有关结果映射的信息。

关于.net - 如何使用NEST客户端将Elasticsearch配置为使用AutoMap类型作为动态映射对象的默认模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45442043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com