{ "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 = value。查询的第一部分被完全忽略。 有修复建议吗?
您正在遇到这一重大变化。minimum_should_match不再设置为1。要更正此问题,请将您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" } } } } } } }