Nest.Search <t>如何使用Hits.Fields.FieldValue <object,short> </object,short> </t>获取short的字段值

时间:2014-06-19 14:53:18

标签: c# nest

我尝试在使用返回Search<T>的{​​{1}}期间仅返回必填字段

我正在指定要返回的字段,例如字段(&#34; abspath&#34;,&#34; URLLen&#34;),这些确实被带回到响应中&#39;击中对象。

注意:Page是我的DTO,包含abspath(string)&amp;的公共属性。 URLLen(短)。

获取包含字符串的字段的文档化方法可以正常工作:

ISearchResponse<T>

但尝试使用short或int或long执行此操作会因null异常而失败(因为URLLen为null):

var abspath = Hits.Fields.FieldValue<Page, string>(f => f.abspath)[0]

我在这里错过了一些东西吗?

1 个答案:

答案 0 :(得分:1)

失败是因为在表达式解析(f =&gt; f.URLLen)期间Resolve(...)方法 骆驼案的反应如此失败。

确实从github下载源代码并添加单元测试确认了这一点。 将es对象字段名称更改为“uRLLen”可以解决问题。 问题代码区域是

public string Resolve(MemberInfo info)
        {
            if (info == null)
                return null;

            var name = info.Name;
            **var resolvedName = name.ToCamelCase();**
            var att = ElasticAttributes.Property(info);
            if (att != null && !att.Name.IsNullOrEmpty())
                resolvedName = att.Name;

            return resolvedName;
        }

这是设计使用 - 请参阅http://elasticsearch-users.115913.n3.nabble.com/lowercase-property-names-from-NET-using-NEST-td4039978.html 以获取快速修复。另见 http://nest.azurewebsites.net/nest/index-type-inference.html