[英]NEST 5.x Fields Usage
我有来自Nest 2.3的两个代码段,这些代码段我无法在最新的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”的定义,并且找不到扩展方法“ Fields”接受类型为“ Nest.SearchDescriptor”的第一个参数(您是否缺少using指令或程序集引用?
在这种情况下,我没有获得任何可编译的东西的运气。
在最新版本的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"
};
对于第二部分, .Fields()
上SearchRequest
现在是.StoredFields()
与在Elasticsearch变更线 ,以指示它是被用来检索存储字段仅( 那些设置为store:true
在映射 ) 。 如问题中所述,如果您使用.Fields()
从_source
字段中检索部分文档,则建议对此使用源过滤 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.