是否可以有多个查询匹配多个字段?

时间:2018-12-12 12:39:01

标签: elasticsearch nest

我想获得所有与Title类中的查询“ table”匹配并且与我的CategoryId类的Product字段中的数字“ 1”匹配的结果。可以在elasticsearch / nest中完成吗?

public class ProductModel
{
    public string Title { get; set; }
    public int CategoryId { get; set; }
}

这就是我现在拥有的:

response = await ElasticClient.SearchAsync<ProductModel>(s => s
                 .From(skip)
                 .Size(itemsPerPage)
                 .Index(indexName)
                 .Query(q => q
                       .SimpleQueryString(qs => qs
                           .Fields(fs => fs
                           .Field(f => f.Title, 3.50)
                           )
                           .Query("" + productSearch.Query + "")
                          )
                        )
                  );

我只想获取CategoryId字段中值也为“ 1”的结果。

1 个答案:

答案 0 :(得分:0)

感谢@Benjamin Trent

如果其他人也有类似的问题,我最终使用以下命令:

response = await ElasticClient.SearchAsync<ProductModel>(s => s
                 .From(skip)
                 .Size(itemsPerPage)
                 .Index(indexName)
                 .Query(q => q
                   .Bool(b => b
                       .Should(
                           bs => bs.Term(p => p.CategoryId, productSearch.CategoryId),
                           bs => bs.SimpleQueryString(qs => qs
                                       .Fields(fs => fs
                                       .Field(f => f.Title, 3.50)
                                       .Field(f => f.BrandName, 3.00)
                                       .Field(f => f.Description, 2.00)
                                       )
                                       .Query("" + productSearch.Query + "")
                                       )
                               )
                           )
                       )
                   );