弹性聚合和后过滤器

pepwfjgg  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(0)|浏览(179)

我有一个问题与创建弹性面。
我有一些产品的品牌和商店道具,现在我想过滤结果,例如:

Brand: Adidas
Shop: Amazon

但用户仍必须能够选择其他按品牌过滤的商店和按商店过滤的品牌。
我试着这样做:

var queryResult = await client.SearchAsync<Product>(s => s.From((parameters.Page-1) * 56)
                            .Size(56)                   
                            .Sort(s => s.Descending(f => f.Price))
                            .Aggregations(a => a.Terms("Brands", st => st.Field(o => o.BrandSeo)
                                                    ).Terms("Shops", st => st.Field(f => f.ShopSeo))
                            ).PostFilter(q => {
                                QueryContainer query = null;
                                if (parameters.Shops.Any())
                                    query &= q.Terms(t => t.Field(p => p.ShopSeo).Terms(parameters.Shops));
                                if (parameters.Brands.Any())
                                    query &= q.Terms(t => t.Field(p => p.BrandSeo).Terms(parameters.Brands));
                                return query;
                            }
                            ));

我的产品是过滤的,但聚合不是,品牌不是按商店过滤,商店不是按品牌过滤。在过滤器中,我只想向用户展示品牌为“adidas”的商店和品牌为“amazon”的商店。一次查询就可以吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题