title: Elasticsearch Query String Query not working with synonym analyzer
body: <p>I am trying to configure elastic search with synonyms.</p>
  
  <p>These are my settings:</p>
  
  <pre><code>                "analysis": {
                      "analyzer": {
                          "category_synonym": {
                              "tokenizer": "whitespace",
                              "filter": [
                                  "synonym_filter"
                              ]
                          }
                      },
                      "filter": {
                          "synonym_filter": {
                              "type": "synonym",
                              "synonyms_path": "synonyms.txt"
                          }
                      }
                  }
  </code></pre>
  
  <p>Mappings config:</p>
  
  <pre><code>        "category": {
              "properties": {
                  "name": {
                      "type":"string",
                      "search_analyzer" : "category_synonym",
                      "index_analyzer" : "standard",
                      "fields": {
                          "raw": {
                              "type":  "string",
                              "index": "not_analyzed"
                          }
                      }
                  }
              }
          }
  </code></pre>
  
  <p>And the list of my synonyms</p>
  
  <pre><code>film =&gt; video,
  ooh =&gt; panels , poster,
  commercial =&gt; advertisement,
  print =&gt; magazine
  </code></pre>
  
  <p>I must say that I am using Elasticsearch Java API. 
  I am using <code>QueryBuilders.queryStringQuery</code> because this is the only way how I set analyzers to my request.
  So, when I am making:</p>
  
  <pre><code>QueryBuilders.queryStringQuery("name:film").analyzer(analyzer)
  </code></pre>
  
  <p>It returns me</p>
  
  <pre><code>[
    {
      "id": 71,
      "name": "Pitch video",
      "description": "... ",
      "parent": null
    },
    {
      "id": 25,
      "name": "Video",
      "description": "... ",
      "parent": null
    }
  ]
  </code></pre>
  
  <p>That is perfect for me, but when I am calling something like this</p>
  
  <pre><code>QueryBuilders.queryStringQuery("name:vid").analyzer(analyzer)
  </code></pre>
  
  <p>I expect that it should return same objects, but there is nothing: <code>[]</code></p>
  
  <p>So, I added asterisk to <code>queryStringQuery</code>:</p>
  
  <pre><code>QueryBuilders.queryStringQuery("name:vid*").analyzer(analyzer)
  </code></pre>
  
  <p>Works well, but now</p>
  
  <pre><code>QueryBuilders.queryStringQuery("name:film*").analyzer(analyzer)
  </code></pre>
  
  <p>returns me <code>[]</code></p>
  
  <p>So, how can I configure my elastic search that it will return same objects when I am searching <code>video</code>, <code>vid</code>, <code>film</code> and <code>fil</code>?</p>
  
  <p>Thanks in advance!</p>