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

时间:2017-09-26 17:29:59

标签: elasticsearch nest elasticsearch-net

是否可以利用NEST auto-mapping features获取Nest Property和Type对象,而无需通过PUT Mapping和Create Index API将它们实际写入弹性索引?

例如,我想自动映射此CLR类公司:

>>> k=5
>>> zip(*[n[i:i+k] for i in range(0,len(n),k)])
[(1, 6, 11), (2, 7, 12)]

并将弹性映射存储到以下变量中:

public class Company
{
    public string Name { get; set; }
}

但不要将公司映射写入索引。

我可以写一个临时索引作为解决方法,但我怀疑这不是必需的。

使用elasticsearch 5.x和Nest 5.

1 个答案:

答案 0 :(得分:0)

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

使用PropertyWalker

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

将提供自动化推断的IProperty类型。

使用TypeMappingDescriptor<T>

var descriptor = (ITypeMapping)new TypeMappingDescriptor<Company>()
    .AutoMap();
IProperty的任何其他属性外,

还会在自动化推断的.Properties属性中提供ITypeMapping个类型。需要在此处使用描述符而不是TypeMapping,因为描述符具有.AutoMap()方法。当显式实现接口属性时,还需要强制转换为接口。