一尘不染

如何在NEST中禁用骆驼套Elasticsearch字段名称?

elasticsearch

默认情况下,在将对象发送到Elasticsearch进行索引时,NEST将使用驼峰箱对象和属性名称。如何在NEST中为Elasticsearch文档禁用骆驼框字段名称?我已经做了大量的研究,并且有一个关于该主题的邮件列表主题,但是由于某些方法已被重命名或不再存在,因此它似乎已经过时了。

IConnectionPool connectionPool = new SniffingConnectionPool(m_ElasticsearchNodeUris);
ConnectionSettings settings = new ConnectionSettings(connectionPool);
settings.SetDefaultTypeNameInferrer(p => p.Name); //This disables camel casing for object type names
ElasticClient client = new ElasticClient(settings);

邮件列表中的信息表明应添加此代码来处理字段名称,但似乎不存在客户端方法:

client.ModifyJsonSerializationSettings(s => s.ContractResolver = new Nest.Resolvers.ElasticResolver(settings);

有人有更新的语法来处理吗?谢谢。


阅读 244

收藏
2020-06-22

共1个答案

一尘不染

ConnectionSettings.SetDefaultPropertyNameInferrer()是您要寻找的。此方法接受采用属性名称并对其进行转换的函数。然后在将请求发送到Elasticsearch之前,在您的每个属性上调用该函数。

如果要保持属性名称不变,则可以执行以下操作:

settings.SetDefaultPropertyNameInferrer(p => p)

p => p 这里只是一个函数,它接受一个字符串(您的属性名)并返回未修改的相同字符串。

2020-06-22