【问题标题】:NEST 5.x Fields UsageNEST 5.x 字段用法
【发布时间】:2016-11-27 21:07:28
【问题描述】:

我有两个来自 Nest 2.3 的 sn-ps 代码,我无法在最新的 5.0.0-rc3 中合作。

var titleField = Infer.Field<Page>(p => p.Title, 2);
        var metaDescriptionField = Infer.Field<Page>(p => p.MetaDescription, 1.5);
        var metaKeywordsField = Infer.Field<Page>(p => p.Keywords, 2);
        var bodyField = Infer.Field<Page>(p => p.Body);

        MultiMatchQuery multiMatchQuery = new MultiMatchQuery()
        {
            Fields = new [] {
                bodyField, 
                metaKeywordsField,
                metaKeywordsField,
                titleField
            },
            Query = search.Term
        };

这里的构建错误是“无法将 Nest.Field[] 隐式转换为 Nest.Fields”。我可以做类似的事情

MultiMatchQuery multiMatchQuery = new MultiMatchQuery()
        {
            Fields = Infer.Fields<Page>(p => p.Title, p => p.MetaDescription, p => p.Keywords, p => p.Body),
            Query = search.Term
        };

但是我失去了字段权重。

我遇到麻烦的第二场 useagle 是

var searchResponse = client.Search<Page>(s => s
            .MatchAll()
            .From(from)
            .Size(size)
            .Fields(f => f.Field(fi => fi.Id).Field(fi => fi.SourceId))
            );

此处的构建错误是“Nest.SearchDescriptor”不包含“Fields”的定义,并且找不到接受“Nest.SearchDescriptor”类型的第一个参数的扩展方法“Fields”(您是否缺少 using 指令或程序集参考?

在这种情况下,我没有得到任何可编译的东西。

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    在最新版本的 5.x 中缺少将 Field[] 转换为 Fields 的隐式运算符;除了其他有用的重载之外,我还将添加它,以进入下一个版本。同时,您可以使用强类型和提升的字段构造Fields

    Fields fields = ((Fields)Infer.Field<Document>(f => f.Property1, 1.2))
                        .And<Document>(f => f.Property2, 2)
                        .And<Document>(f => f.Property3, 5);
    

    你也可以使用字符串

    Fields fields = new[]
    {
        "property1^1.2",
        "property2^2",
        "property3^5"
    };
    

    对于第二部分,SearchRequest 上的 .Fields() 现在是 .StoredFields()in line with the change in Elasticsearch,表示它仅用于检索存储的字段 (those set to store:true in the mapping)。如问题中所述,如果您使用.Fields()_source 字段中检索部分文档,建议您为此使用source filtering

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 2017-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多