如何在不写入弹性搜索索引的情况下在 Nest 中自动映射?
How to automap in Nest without writing to the elasticsearch index?
是否可以利用 NEST auto-mapping features 获取 Nest 属性 和 Type 对象,而无需通过 PUT Mapping 和 Create Index API 将它们实际写入弹性索引?
例如,我想自动映射此 CLR class 公司:
public class Company
{
public string Name { get; set; }
}
并将弹性映射存储到如下变量中:
Nest.TypeMapping typeCo = null; // for the mapped Company type
Nest.IProperty propCoName = null; // for the mapped Company Name property
但不要将公司映射写入索引。
我可以写入临时索引作为解决方法,但我怀疑这不是必需的。
使用 elasticsearch 5.x 和 Nest 5。
根据您的具体需要,您可以采取几种不同的方法
使用PropertyWalker
var walker = new PropertyWalker(typeof(Company), null);
var properties = walker.GetProperties();
将提供自动映射推断的 IProperty
类型。
使用TypeMappingDescriptor<T>
var descriptor = (ITypeMapping)new TypeMappingDescriptor<Company>()
.AutoMap();
将在 .Properties
属性 中提供从自动映射推断出的 IProperty
类型,以及 ITypeMapping
的任何其他属性。需要在此处使用描述符而不是 TypeMapping
,因为描述符具有 .AutoMap()
方法。还需要转换为接口,因为接口属性已明确实现。
是否可以利用 NEST auto-mapping features 获取 Nest 属性 和 Type 对象,而无需通过 PUT Mapping 和 Create Index API 将它们实际写入弹性索引?
例如,我想自动映射此 CLR class 公司:
public class Company
{
public string Name { get; set; }
}
并将弹性映射存储到如下变量中:
Nest.TypeMapping typeCo = null; // for the mapped Company type
Nest.IProperty propCoName = null; // for the mapped Company Name property
但不要将公司映射写入索引。
我可以写入临时索引作为解决方法,但我怀疑这不是必需的。
使用 elasticsearch 5.x 和 Nest 5。
根据您的具体需要,您可以采取几种不同的方法
使用PropertyWalker
var walker = new PropertyWalker(typeof(Company), null);
var properties = walker.GetProperties();
将提供自动映射推断的 IProperty
类型。
使用TypeMappingDescriptor<T>
var descriptor = (ITypeMapping)new TypeMappingDescriptor<Company>()
.AutoMap();
将在 .Properties
属性 中提供从自动映射推断出的 IProperty
类型,以及 ITypeMapping
的任何其他属性。需要在此处使用描述符而不是 TypeMapping
,因为描述符具有 .AutoMap()
方法。还需要转换为接口,因为接口属性已明确实现。