我想做类似于“和”过滤器示例的操作,除了每个示例中都带有“应该”的术语,而不是示例中的字段类型。我提出以下内容:
{ "query": { "bool": { "must": [ { "ids": { "type": "foo", "values": [ "fff", "bar", "baz", ] } } ] } }, "filter": { "and": { "filters": [ { "bool": { "should": { "term": { "fruit": [ "orange", "apple", "pear", ] } }, "minimum_should_match": 1 } }, { "bool": { "should": { "term": { "color": [ "red", "yellow", "green" ] } }, "minimum_should_match": 1 } } ] } } }
但是,我收到此错误:
[bool] filter does not support [minimum_should_match];
还有另一种方法可以执行我正在尝试执行的操作,还是我走在正确的轨道上?还是在Elasticsearch中这是不可能的?
每个布尔查询子句可以包含多个子句。字词查询(http://www.elasticsearch.org/guide/reference/query- dsl/terms-query/)是一种指定查询应与任何字词列表匹配的简便方法。除了使用之前的ID查询,以下使用术语查询说水果必须是橙色,苹果,梨和颜色之一必须是红色,黄色,绿色之一。
{ "query": { "bool": { "must": [ { "ids": { "type": "foo", "values": [ "fff", "bar", "baz" ] } }, { "terms": { "fruit": [ "orange", "apple","pear" ], "minimum_should_match": 1 } }, { "terms": { "color": [ "red", "yellow", "green" ], "minimum_should_match": 1 } } ] } } }