您想要做的是从两个查询组成一个复合查询,其中两个查询都必须由文档满足才能将其视为
匹配。一个bool查询用于查询在此结合的方式,使用must条款同时指定
查询,必须得到满足。这是一个带有对象初始化器语法的示例
var client = new ElasticClient();var indexName = "index-name";var mustClauses = new List<QueryContainer>();mustClauses.Add(new TermQuery{ Field = new Field("description"), Value = "white"});mustClauses.Add(new NumericRangeQuery{ Field = new Field("price"), LessThanOrEqualTo = 3000, GreaterThanOrEqualTo = 2000});var searchRequest = new SearchRequest<Product>(indexName){ Size = 10, From = 0, Query = new BoolQuery { Must = mustClauses }};var searchResponse = client.Search<Product>(searchRequest);对于range查询,文档是否是查询子句的匹配项,所以我们可以通过将其添加为bool查询filter子句来放弃为查询计算的分数
var indexName = "index-name";var mustClauses = new List<QueryContainer>();var filterClauses = new List<QueryContainer>();mustClauses.Add(new TermQuery{ Field = new Field("description"), Value = "white"});filterClauses.Add(new NumericRangeQuery{ Field = new Field("price"), LessThanOrEqualTo = 3000, GreaterThanOrEqualTo = 2000});var searchRequest = new SearchRequest<Product>(indexName){ Size = 10, From = 0, Query = new BoolQuery { Must = mustClauses, Filter = filterClauses }};var searchResponse = client.Search<Product>(searchRequest);


