【发布时间】:2016-05-07 00:58:30
【问题描述】:
我需要能够根据某些条件将不同的查询类型添加到我的 Bool 查询中,但是我无法弄清楚如何做到这一点,因为 Must() 函数要求 params QueryContainer[] queries
例如,这是我可以做的:
desc.Query(qq => qq.Bool(qqq => qqq.Must(m => m.Range(r => r.OnField("lastModified").GreaterOrEquals("from").LowerOrEquals("to")), s => s.Prefix(p => p.OnField("test").Value("query")))));
如您所见,Range 查询和Prefix 查询在这里一起使用,但在Must 方法中以逗号分隔。我需要能够做更多类似的事情:
List<QueryContainer> queryList = new List<QueryContainer>();
// Range
if (searchTypes.Contains(5)) {
QueryDescriptor<BackupEntitySearchDocument> qd = new QueryDescriptor<BackupEntitySearchDocument>();
qd.Range(r => r.OnField("lastModified").GreaterOrEquals("from").LowerOrEquals("to"));
queryList.Add(qd);
}
/// A couple other query types may be added to queryList here
desc.Query(qq => qq.Bool(b => b.Must(queryList)));
然后能够检查并可能添加到queryList 列表中的多个其他条件。
这有意义吗?任何想法如何获得此功能?
【问题讨论】:
-
您使用的是哪个版本的 NEST?此外,您运行的是哪个版本的 Elasticsearch?
标签: c# elasticsearch nest