我正在使用NEST对象初始化程序语法在给定用户输入的情况下动态构建我的查询。我使用的查询格式是这样的:
"query": {
"bool": {
"should": [{
"range": {
"field1": {
"lt": x
}
}
}, {
"range": {
"field2": {
"lt": y
}
}
}],
"filter": [{
...
}]
}
}
上述查询不起作用,因为过滤器会覆盖should,除非should子句有" minimum_should_match"附加到它的字段,如下:
"query": {
"bool": {
"should": [{
"range": {
"field1": {
"lt": x
}
}
}, {
"range": {
"field2": {
"lt": y
}
}
}],
"minimum_should_match" = "1",
"filter": [{
...
}]
}
}
但是,我似乎找不到正确定位minimum_should_match子句的方法,以便它位于should和filter之间。 BoolQuery接受" MinimumShouldMatch"字段,但是在过滤器之后而不是在应该之前追加它。
有没有办法做到这一点,或者我将不得不使用原始搜索输入?
答案 0 :(得分:0)
根据Russ Cam的评论,“minimum_should_match”子句的定位并不重要。我在测试中犯了一个错误,让我认为过滤器被覆盖了,我错误地认为定位是问题所在。我去了并重新测试了查询,它运行正常。