我想用 NEST 附加多个布尔过滤器,但我不能(实际上)在一个语句中做到这一点,因为我想根据不同的条件构建一组布尔过滤器。
像这样的伪代码:
// Append a filter
searchDescriptor.Filter(f => f.Bool(b => b.Must(m => m.Term(i => i.SomeProperty, "SomeValue"))));
if (UserId.HasValue)
{
// Optionally append another filter (AND condition with the first filter)
searchDescriptor.Filter(f => f.Bool(b => b.Must(m => m.Term(i => i.AnotherProperty, "MyOtherValue"))));
}
var result = Client.Search(searchDescriptor);
现在看来,当附加第二个可选过滤器时,它基本上取代了第一个过滤器。
我确定我在语法上遗漏了一些东西,但我无法弄清楚,并且 NEST 文档在过滤器 DSL 上有点薄。:)