目前,我一直在通过 REST Api 添加映射,并使用 NEST 以编程方式索引文档。
但是,我最近遇到了 NEST 的 DefaultMappingFor(在 ConnectionSettings 中)并想知道它是如何使用的。 (不会很快飙升,因此询问。)
问题:在源代码中,如果我使用 DefaultMappingFor 设置映射,这是否意味着不需要使用 Rest Api 创建映射,因为,也许(我认为)和 NEST每当文档被索引时都会使用声明的默认映射?
谢谢。
最佳答案
DefaultMappingFor()
and DefaultMappingFor<T>()
允许您为给定的 CLR 类型配置默认值。两者都允许您配置:
- 要使用的默认索引名称,通过
.IndexName()
方法 - 要使用的默认类型名称,通过
.TypeName()
方法 - mapping as Parent/Child relationship 时使用的默认关系名称,通过
.RelationName()
方法
此外,DefaultMappingFor<T>()
允许您配置:
- 通过
.IdProperty()
用于文档 ID 的类型属性方法 - 用于路由参数的类型属性(对于父/子关系设置很有用,而且当您需要路由时也有用),通过
.Routing()
方法 - 通过
.Ignore()
序列化类型时要忽略哪些属性方法 - 哪些属性应通过
.PropertyName()
使用不同的字段名称进行序列化方法
为类型设置其中任何一个都意味着 NEST 将使用它们而不是它具有的任何约定。典型使用的是 .IndexName()
和.TypeName()
(尽管 types are removed in Elasticsearch 6.x ),并且意味着您不需要在每个请求上指定其中任何一个(除非您也想覆盖此默认映射)。
关于Elasticsearch NEST DefaultMapping供使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813514/