c# - 如何在 NEST 中禁用驼峰式 Elasticsearch 字段名称?

标签 c# elasticsearch nest

默认情况下,NEST 在将对象发送到 Elasticsearch 进行索引时会采用驼峰式命名对象和属性名称。如何在 NEST for Elasticsearch 文档中禁用驼峰式字段名称?我做了相当多的研究,并且有一个 mailing list thread关于这个主题,但它似乎已经过时,因为某些方法已重命名或不再存在。

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);

有没有人有任何更新的语法来处理这个问题?谢谢。

最佳答案

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

如果你想保持你的属性名称不变,那么你可以这样做:

settings.SetDefaultPropertyNameInferrer(p => p)

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

关于c# - 如何在 NEST 中禁用驼峰式 Elasticsearch 字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282865/

相关文章:

c# - Web API 自托管客户端配置

c# - 从特定类型删除旧的Elasticsearch日志

c# - 基于第三方ElasticSearch解决方案在解决方案中制作对象模型

elasticsearch - 当使用短语时,elasticsearch查询字符串未执行预期的模糊查询

c# - 在没有 WMI 的情况下获取电池信息

c# - 正则表达式、捕获组和单元测试的良好设计

java - 仅在使用 UNITY3d 构建的 Android 应用程序中实例化 SoapService 时出现 ArgumentException

elasticsearch - 需要说明Logstash配置中使用的sql_last_value

java - 搜索时忽略空格 - RESTHighLevelClient Java

scala - Elastic4s-为一个术语找到多个精确值