Returns documents based on a provided query string, using a parser with a limited but fault-tolerant syntax.
This query uses a simple syntax to parse and split the provided query string into terms based on special operators. The query then analyzes each term independently before returning matching documents.
While its syntax is more limited than the query_string
query, the simple_query_string
query does not return errors for invalid syntax. Instead, it ignores any invalid parts of the query string.
GET /_search
{ "query": { "simple_query_string" : { "query": "\"fried eggs\" +(eggplant | potato) -frittata", "fields": ["title^5", "body"], "default_operator": "and" } } }
query
fields
This field accepts wildcard expressions. You also can boost relevance scores for matches to particular fields using a caret (^
) notation. See Wildcards and per-field boosts in the fields
parameter for examples.
Defaults to the index.query.default_field
index setting, which has a default value of *
. The *
value extracts all fields that are eligible to term queries and filters the metadata fields. All extracted fields are then combined to build a query if no prefix
is specified.
Warning
There is a limit on the number of fields that can be queried at once. It is defined by the indices.query.bool.max_clause_count
search setting, which defaults to 1024
.
default_operator
(Optional, string) Default boolean logic used to interpret text in the query string if no operators are specified. Valid values are:
OR
(Default) For example, a query string of capital of Hungary
is interpreted as capital OR of OR Hungary
.AND
For example, a query string of capital of Hungary
is interpreted as capital AND of AND Hungary
.analyze_wildcard
true
, the query attempts to analyze wildcard terms in the query string. Defaults to false
. Note that, in case of true
, only queries that end with a *
are fully analyzed. Queries that start with *
or have it in the middle are only normalized.
analyzer
default_field
. If no analyzer is mapped, the indexâs default analyzer is used.
auto_generate_synonyms_phrase_query
true
, the parser creates a match_phrase
query for each multi-position token. Defaults to true
. For examples, see Multi-position tokens.
flags
ALL
(all operators). See Limit operators for valid values.
fuzzy_max_expansions
50
.
fuzzy_prefix_length
0
.
fuzzy_transpositions
true
, edits for fuzzy matching include transpositions of two adjacent characters (ab â ba). Defaults to true
.
lenient
true
, format-based errors, such as providing a text value for a numeric field, are ignored. Defaults to false
.
minimum_should_match
minimum_should_match
parameter for valid values and more information.
quote_field_suffix
You can use this suffix to use a different analysis method for exact matches. See Mixing exact search with stemming.
The simple_query_string
query supports the following operators:
+
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 amountTo use one of these characters literally, escape it with a preceding backslash (\
).
The behavior of these operators may differ depending on the default_operator
value. For example:
GET /_search
{ "query": { "simple_query_string": { "fields": [ "content" ], "query": "foo bar -baz" } } }
This search is intended to only return documents containing foo
or bar
that also do not contain baz
. However because of a default_operator
of OR
, this search actually returns documents that contain foo
or bar
and any documents that donât contain baz
. To return documents as intended, change the query string to foo bar +-baz
.
You can use the flags
parameter to limit the supported operators for the simple query string syntax.
To explicitly enable only specific operators, use a |
separator. For example, a flags
value of OR|AND|PREFIX
disables all operators except OR
, AND
, and PREFIX
.
GET /_search
{ "query": { "simple_query_string": { "query": "foo | bar + baz*", "flags": "OR|AND|PREFIX" } } }
The available flags are:
ALL
(Default)
AND
+
AND operator.
ESCAPE
\
as an escape character.
FUZZY
~N
operator after a word, where N
is an integer denoting the allowed edit distance for matching. See Fuzziness.
NEAR
~N
operator, after a phrase where N
is the maximum number of positions allowed between matching tokens. Synonymous to SLOP
.
NONE
NOT
-
NOT operator.
OR
\|
OR operator.
PHRASE
"
quotes operator used to search for phrases.
PRECEDENCE
(
and )
operators to control operator precedence.
PREFIX
*
prefix operator.
SLOP
~N
operator, after a phrase where N
is maximum number of positions allowed between matching tokens. Synonymous to NEAR
.
WHITESPACE
Fields can be specified with wildcards, eg:
GET /_search
{ "query": { "simple_query_string" : { "query": "Will Smith", "fields": [ "title", "*_name" ] } } }
title
, first_name
and last_name
fields.Individual fields can be boosted with the caret (^
) notation:
GET /_search
{ "query": { "simple_query_string" : { "query" : "this is a test", "fields" : [ "subject^3", "message" ] } } }
subject
field is three times as important as the message
field.By default, the simple_query_string
query parser creates a match_phrase
query for each multi-position token in the query string. For example, the parser creates a match_phrase
query for the multi-word synonym ny, new york
:
(ny OR ("new york"))
To match multi-position tokens with an AND
conjunction instead, set auto_generate_synonyms_phrase_query
to false
:
GET /_search
{ "query": { "simple_query_string": { "query": "ny city", "auto_generate_synonyms_phrase_query": false } } }
For the above example, the parser creates the following bool
query:
(ny OR (new AND york)) city)
This bool
query matches documents with the term ny
or the conjunction new AND york
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4