我正在使用nest6.0.1和elasticsearch版本相同。我想用术语来做一个选择。单独,它可以工作,但与其他过滤器一起,如。必须。。。似乎.terms忽略了.must筛选器。
// Params comming in request method:
ElasticClient client, int maximumRows, string jobId, string merchantId, string category, ICollection<int> priorityFilterCollection
var searchResponse = client.Search<LogEntity>(s => s
.From(0)
.Size(maximumRows)
.Query(q => q
.Bool(b => b
.Must(
sd => sd.MatchPhrase(m => m
.Field(f => f.JobId)
.Query(jobId)
)
)
.Must(
sd => sd.MatchPhrase(m => m
.Field(f => f.MerchantId)
.Query(merchantId)
)
)
.Must(
sd => sd.MatchPhrase(m => m
.Field(f => f.Category)
.Query(category)
)
)
.Must(
sd => sd.Terms(m => m
.Field(f => f.Priority)
.Terms<int>(priorityFilterCollection)
)
)
)
)
);
1条答案
按热度按时间hfyxw5xn1#
打电话给
Must
在bool上,查询描述符是赋值的,因此对于多个调用,只有最后一个被赋值给must子句。bool查询需要重写才能传递多个must子句查看编写bool查询文档