【发布时间】:2015-03-29 01:15:05
【问题描述】:
我在 asp.net mvc 应用程序中使用 elasticsearch 嵌套。
elasticsearch 查询之后会引发异常,因为类别和品牌等字段可能为空或为空。如何添加 if 语句并有条件地构建过滤器。谢谢!
我必须使用 bool 和 must 组合 (AND) 过滤器来满足搜索条件。例如,用户想要“鞋子”类别的产品和零售商“macys”中的产品。
s.Query(q => q
.Bool(bq => bq
.Must(
mq => mq.Filtered(fq => fq
.Filter(f => f.Terms("Categories", request.Categories))
),
mq => mq.Filtered(fq => fq
.Filter(f => f.Terms("BrandName", request.Brands))
),
mq => mq.Filtered(fq => fq
.Filter(f => f.Terms("RetailerName", request.Retailers))
),
mq => mq.Filtered(fq => fq
.Filter(f => f.Terms("RetailerName", request.Retailers))
),
mq => mq.Range(r => r
.OnField("SellingPrice")
.GreaterOrEquals((double)request.PriceRanges[0].Start)
.LowerOrEquals((double)request.PriceRanges[0].End)
)
)
)
);
【问题讨论】: