ElasticSearch数组多个值匹配

Posted by shellj on
比如ES里有一个字段是的值为:
"tags": [1, 2, 3, 4, 5]
希望搜索 [2, 3, 4] 得到这条数据,tags 里必须有 2, 3, 4 这几个值,使用 termsQuery 似乎是包含一个值就能搜索出来。可以使用多个 term query 搜索,每个条件一个值,就可以得到想要的效果了,例如下面的搜索:
{
    "from": 0,
    "size": 30,
    "timeout": "2000ms",
    "query": {
        "bool": {
            "must": [
                {
                    "term": {
                        "bizz_tag_s": {
                            "value": 5
                        }
                    }
                },
                {
                    "term": {
                        "bizz_tag_s": {
                            "value": 9
                        }
                    }
                },
                {
                    "term": {
                        "bizz_tag_s": {
                            "value": 3
                        }
                    }
                }
            ]
        }
    }
}