【发布时间】:2017-11-05 17:05:15
【问题描述】:
我有以下查询,我使用“&=”零碎/动态构建。 Elasticsearch 5.x 和 Nest 5.x。
QueryContainer qfilter = null;
qfilter = Query<ClassEL>.Term(m => m.OrderID, iOrderID);
qfilter &= Query<ClassEL>
.Range(r => r
.Field(f => f.Distance)
.GreaterThan(100))
&&
.Query<ClassEL>.Term(t => t.Active, true);
var searchDes = new SearchDescriptor<ClassEL>()
.From(0)
.Size(10)
.Query(qfilter); <===== *** ERROR HERE ***
在 Visual Studio 中,它显示以下错误消息提示:
Error: Cannot convert from 'Nest.QueryContainer' to 'System.Func<Nest.QueryContainerDescriptor<ClassEL>, Nest.QueryContainer>'
问题是我无法让 searchDescriptor 接受我构建的查询。在线示例显示 Search + Query 合二为一,这与我想要完成的不同。以下是我想避免的常见示例:
var response = client.Search<Tweet>(s => s
.From(0)
.Size(10)
.Query(q =>
q.Term(t => t.User, "kimchy")
|| q.Match(mq => mq.Field(f => f.User).Query("nest"))
)
);
编辑:使用安德烈的答案就可以了。但是,当我尝试从搜索查询中获取结果时出现了问题:
List<ClassViewEL> listDocuments = response.Documents.ToList();
Visual Studio 不会立即将其突出显示为错误,但在编译时出现问题:
错误 CS0570: 'Nest.ISearchResponse.Documents' 是 语言不支持
调试并选择IGNORE上述错误工作正常,代码按预期执行没有问题。但是编译时错误会阻止代码部署。如何解决此错误?
解决方案 编辑:我的项目 (Newtonsoft.Json.dll) 中的一个依赖项针对的是旧版本,导致出现错误。清理解决方案并重建解决方案。
【问题讨论】:
标签: elasticsearch nest