提问者:小点点

如何在不写入elasticsearch索引的情况下在Nest中自动映射?


是否可以利用NEST自动映射功能来获取Nest Property和Type对象,而无需通过PUT映射和创建索引API将它们实际写入弹性索引?

例如,我想自动映射这个CLR类Company:

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。


共1个答案

匿名用户

根据你的需要你可以采取几种不同的方法

var walker = new PropertyWalker(typeof(Company), null);   
var properties = walker.GetProperties();

将提供通过自动映射推断的IProperty类型。

var descriptor = (ITypeMapping)new TypeMappingDescriptor<Company>()
    .AutoMap();

将在中提供IProperty类型。从自动映射推断出的属性属性,以及ITypeMaps的任何其他属性。需要在这里使用描述符而不是TypeMaps,因为描述符具有。AutoMap()方法。还需要转换为接口,因为接口属性是显式实现的。