我想进行匹配多个值(值数组)的搜索,如下所示:
var result1 = _client.Search<type1>(s => s
.Fields(f => f.trip_id)
.Query(q => q
.Terms(t => t.arg1, value1)).Take(_allData))
.Documents.Select(d => d.arg2).ToArray();
var result2 = _client.Search<type2>(s => s
.Query(q => q
.Terms(t => t.arg3, result1))
.Take(_allData)
).Documents.Select(s => s.ar3).ToList();
我该怎么办?我在思考方面,但我不知道如何做到这一点。
现在唯一可行的方法是使用foreach
迭代器,它不是真正有效的......
感谢您的帮助。
答案 0 :(得分:5)
您可以表达多个查询:
.Query(q=>q.Terms(t=>t.arg3, result1) && q.Terms(t=>t.arg1, value1))
请务必阅读documentation on writing queries以了解NEST所提供的所有优点。
答案 1 :(得分:0)
Orelus, 我想用你的解决方案
.And( af=>af.Term(...), af=>af.Term(...) )
我不明白这适合哪里,这是我的非工作过滤器的一个例子
var results = client.Search<music>(s => s
.Query(q => q
.Filtered(f => f.
Filter(b => b.Bool(m => m.Must(
t => t
.Term(p => p.artist, artist)
&& t.Term(p2 => p2.year, year)
)
)
)
)
)
);