anchor.diff:  
   The `query_string` query supports multi-terms synonym expansion with the <<analysis-synonym-graph-tokenfilter,
   synonym_graph>> token filter. When this filter is used, the parser creates a phrase query for each multi-terms synonyms.
  -For example, the following synonym: `"ny, new york" would produce:`
  +For example, the following synonym: `ny, new york` would produce:
   
   `(ny OR ("new york"))`
   
  
positive.code: // CONSOLE
  
  Since several queries are generated from the individual search terms,
  combining them is automatically done using a `dis_max` query with a tie_breaker.
  For example (the `name` is boosted by 5 using `^5` notation):
  
  [source,js]
  
negative.code: that matches documents with the term `ny` or the conjunction `new AND york`.
  By default the parameter `auto_generate_synonyms_phrase_query` is set to `true`.
  
  [float]
  ==== Minimum should match
  
  The `query_string` splits the query around each operator to create a boolean
  query for the entire input. You can use `minimum_should_match` to control how
  many "should" clauses in the resulting query should match.
  
  [source,js]
  --------------------------------------------------
  GET /_search
  {
      "query": {
          "query_string": {
              "fields": [
                  "title"
              ],
              "query": "this that thus",
              "minimum_should_match": 2
          }
      }
  }
  --------------------------------------------------
  // CONSOLE
  
  The example above creates a boolean query:
  
  `(title:this title:that title:thus)~2`
  
  that matches documents with at least two of the terms `this`, `that` or `thus`
  in the single field `title`.
  
  [float]
  ===== Multi Field
  
  [source,js]
  --------------------------------------------------
  GET /_search
  {
      "query": {
          "query_string": {
              "fields": [
                  "title",
                  "content"
              ],
              "query": "this that thus",
              "minimum_should_match": 2
          }
      }
  }
  --------------------------------------------------
  // CONSOLE
  
  The example above creates a boolean query:
  
  `((content:this content:that content:thus) | (title:this title:that title:thus))`
  
  that matches documents with the disjunction max over the fields `title` and
  `content`. Here the `minimum_should_match` parameter can't be applied.
  
  [source,js]
  --------------------------------------------------
  GET /_search
  {
      "query": {
          "query_string": {
              "fields": [
                  "title",
                  "content"
              ],
              "query": "this OR that OR thus",
              "minimum_should_match": 2
          }
      }
  }
  --------------------------------------------------
  // CONSOLE
  
  Adding explicit operators forces each term to be considered as a separate clause.
  
  The example above creates a boolean query:
  
  `((content:this | title:this) (content:that | title:that) (content:thus | title:thus))~2`
  
  that matches documents with at least two of the three "should" clauses, each of
  them made of the disjunction max over the fields for each term.
  
  [float]
  ===== Cross Field
  
  [source,js]
  --------------------------------------------------
  GET /_search
  {
      "query": {
          "query_string": {
              "fields": [
                  "title",
                  "content"
              ],
              "query": "this OR that OR thus",
              "type": "cross_fields",
              "minimum_should_match": 2
          }
      }
  }
  --------------------------------------------------
  // CONSOLE
  
  The `cross_fields` value in the `type` field indicates that fields that have the
  same analyzer should be grouped together when the input is analyzed.
  
  The example above creates a boolean query:
  
  `(blended(terms:[field2:this, field1:this]) blended(terms:[field2:that, field1:that]) blended(terms:[field2:thus, field1:thus]))~2`
  
  that matches documents with at least two of the three per-term blended queries.
  
  include::query-string-syntax.asciidoc[]
  