| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 | [[query-dsl-simple-query-string-query]]=== Simple Query String QueryA query that uses the SimpleQueryParser to parse its context. Unlike theregular `query_string` query, the `simple_query_string` query will neverthrow an exception, and discards invalid parts of the query. Here isan example:[source,js]--------------------------------------------------{    "simple_query_string" : {        "query": "\"fried eggs\" +(eggplant | potato) -frittata",        "analyzer": "snowball",        "fields": ["body^5","_all"],        "default_operator": "and"    }}--------------------------------------------------The `simple_query_string` top level parameters include:[cols="<,<",options="header",]|=======================================================================|Parameter |Description|`query` |The actual query to be parsed. See below for syntax.|`fields` |The fields to perform the parsed query against. Defaults to the`index.query.default_field` index settings, which in turn defaults to `_all`.|`default_operator` |The default operator used if no explicit operatoris specified. For example, with a default operator of `OR`, the query`capital of Hungary` is translated to `capital OR of OR Hungary`, andwith default operator of `AND`, the same query is translated to`capital AND of AND Hungary`. The default value is `OR`.|`analyzer` |The analyzer used to analyze each term of the query whencreating composite queries.|`flags` |Flags specifying which features of the `simple_query_string` toenable. Defaults to `ALL`.|`lowercase_expanded_terms` | Whether terms of prefix and fuzzy queries are tobe automatically lower-cased or not (since they are not analyzed). Defaults totrue.|`locale` | added[1.1.0] Locale that should be used for string conversions.Defaults to `ROOT`.|=======================================================================[float]==== Simple Query String SyntaxThe `simple_query_string` supports the following special characters:* `+` signifies AND operation* `|` signifies OR operation* `-` negates a single token* `"` wraps a number of tokens to signify a phrase for searching* `*` at the end of a term signifies a prefix query* `(` and `)` signify precedence* `~N` after a word signifies edit distance (fuzziness)* `~N` after a phrase signifies slop amountIn order to search for any of these special characters, they will need tobe escaped with `\`.[float]==== Default FieldWhen not explicitly specifying the field to search on in the querystring syntax, the `index.query.default_field` will be used to derivewhich field to search on. It defaults to `_all` field.So, if `_all` field is disabled, it might make sense to change it to seta different default field.[float]==== Multi FieldThe fields parameter can also include pattern based field names,allowing to automatically expand to the relevant fields (dynamicallyintroduced fields included). For example:[source,js]--------------------------------------------------{    "simple_query_string" : {        "fields" : ["content", "name.*^5"],        "query" : "foo bar baz"    }}--------------------------------------------------[float]==== Flags`simple_query_string` support multiple flags to specify which parsing featuresshould be enabled. It is specified as a `|`-delimited string with the`flags` parameter:[source,js]--------------------------------------------------{    "simple_query_string" : {        "query" : "foo | bar  & baz*",        "flags" : "OR|AND|PREFIX"    }}--------------------------------------------------The available flags are: `ALL`, `NONE`, `AND`, `OR`, `PREFIX`, `PHRASE`,`PRECEDENCE`, `ESCAPE`, `WHITESPACE`, `FUZZY`, `NEAR`, and `SLOP`.
 |