ElasticSearch按多个关键字过滤

时间:2019-07-01 17:39:03

标签: elasticsearch elasticsearch-6

ElasticSearch 6.8 中,我索引了许多包含标签集合的文档。标签被映射为keyword

"tags": {
    "type": "keyword"
},

这样做的时候

"query" : {
    "bool" : {
        "must" : { "match" : { "name" : "beach" } },
        "filter" : {
            "terms" : { "tags" : ["games", "cars"]  }
        }
    }
}

我得到的文档至少包含这些标签之一。但是我想过滤掉所有不包含所有给定标签的文档。

我尝试过

"query" : {
    "bool" : {
        "must" : { "match" : { "name" : "beach" } },
        "filter" : {
            "terms" : { 
              "tags" : ["games", "cars"], 
              "minimum_should_match": 2 
            }
        }
    }
}

但是它会引发错误:"[terms] query does not support [minimum_should_match]"

哪种方法可以过滤掉不包含这两个标签的文档?请注意,实际查询也可能包含其他“ should”子句。

0 个答案:

没有答案