比如ES里有一个字段是的值为:

1
"tags": [1, 2, 3, 4, 5]  

希望搜索 [2, 3, 4] 得到这条数据,tags 里必须有 2, 3, 4 这几个值,使用 termsQuery 似乎是包含一个值就能搜索出来。可以使用多个 term query 搜索,每个条件一个值,就可以得到想要的效果了,例如下面的搜索:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{  
    "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  
                        }  
                    }  
                }  
            ]  
        }  
    }  
}