title: Filter ElasticSearch result whose array contains at least 1 tag
body: <p>I query against elasticsearch with following DSL.</p>
  
  <pre><code>{
     "query": {
        "filtered": {
           "query": {
              "multi_match": {
                 "query": "Next",
                 "type": "phrase_prefix",
                 "fields": [
                    "defaultContent"
                 ]
              }
           },
           "filter": {
              "bool": {
                 "must_not": {
                    "term": {
                       "_deleted": true
                    }
                 },
                 "should": [
                    {
                       "term": {
                          "site": "xxx"
                       }
                    },
                    {
                       "term": {
                          "site": "base"
                       }
                    }
                 ]
              }
           }
        }
     }
  }
  </code></pre>
  
  <p>And it works and return 1 match.</p>
  
  <pre><code>{
     "took": 42,
     "timed_out": false,
     "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
     },
     "hits": {
        "total": 1,
        "max_score": 2.733073,
        "hits": [
           {
              "_index": "cms",
              "_type": "content",
              "_id": "base&gt;3453fm9lxkmyy_17",
              "_score": 2.733073,
              "_source": {
                 "tags": [
                    "tag1",
                    "tag2"
                 ],
                 "site": "base",
                 "_rev": "1-3b6eb2b3c3d5554bb3ef3f16a299160c",
                 "defaultContent": "Next action to be settled",
                 "_id": "base&gt;3453fm9lxkmyy_17",
                 "type": "content",
                 "key": "3453fm9lxkmyy_17"
              }
           }
        ]
     }
  }
  </code></pre>
  
  <p>Now I want to modify the DSL, and add a new condition -- Only returns those whose tags contains <code>tag1</code> or <code>tag8</code></p>
  
  <pre><code>{
     "query": {
        "filtered": {
           "query": {
              "multi_match": {
                 "query": "Next",
                 "type": "phrase_prefix",
                 "fields": [
                    "defaultContent"
                 ]
              }
           },
           "filter": {
              "bool": {
                 "must": {
                     "term" : {
                         "tags" : ["tag1", "tag8"],
                         "minimum_should_match" : 1
                     }
                 },
                 "must_not": {
                    "term": {
                       "_deleted": true
                    }
                 },
                 "should": [
                    {
                       "term": {
                          "site": "xxx"
                       }
                    },
                    {
                       "term": {
                          "site": "base"
                       }
                    }
                 ]
              }
           }
        }
     }
  }
  </code></pre>
  
  <p>And then, I get nothing.</p>
  
  <pre><code>{
     "took": 23,
     "timed_out": false,
     "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
     },
     "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
     }
  }
  </code></pre>
  
  <p>Am I doing something wrong? It should return 1 match because it contains <code>tag1</code></p>