{
"query":{
"constant_score":{
"filter":{
"bool":{
"should":{
"terms":{
"field_a":[
"value1", "value2"
]
}
},
"must":{
"term":{
"field_b":"value"
}
}
}
}
}
}
}
该搜索应该返回在field_a中包含value1或value2以及在field_b中包含value的结果。
类似于此MySQL查询:
SELECT * FROM table WHERE field_a IN ('value1', 'value2') AND field_b = value
升级后,它将返回所有结果,其中field_b =值。查询的第一部分被完全忽略。
有修复建议吗?
答案 0 :(得分:1)
您遇到this breaking change。 minimum_should_match
不再设置为1
。要更正此问题,请将您的minimum_should_match
设置为1
您的新查询可以这样解决:
{
"query":{
"constant_score":{
"filter":{
"bool":{
"should":{
"terms":{
"field_a":[
"value1", "value2"
]
}
},
"minimum_should_match": 1,
"must":{
"term":{
"field_b":"value"
}
}
}
}
}
}
}