| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 | [[query-dsl-match-query]]=== Match query++++<titleabbrev>Match</titleabbrev>++++Returns documents that match a provided text, number, date or boolean value. Theprovided text is analyzed before matching.The `match` query is the standard query for performing a full-text search,including options for fuzzy matching.[[match-query-ex-request]]==== Example request[source,console]--------------------------------------------------GET /_search{    "query": {        "match" : {            "message" : {                "query" : "this is a test"            }        }    }}--------------------------------------------------[[match-top-level-params]]==== Top-level parameters for `match``<field>`::(Required, object) Field you wish to search.[[match-field-params]]==== Parameters for `<field>``query`::+--(Required) Text, number, boolean value or date you wish to find in the provided`<field>`.The `match` query <<analysis,analyzes>> any provided text before performing asearch. This means the `match` query can search <<text,`text`>> fields foranalyzed tokens rather than an exact term.--`analyzer`::(Optional, string) <<analysis,Analyzer>> used to convert the text in the `query`value into tokens. Defaults to the <<specify-index-time-analyzer,index-timeanalyzer>> mapped for the `<field>`. If no analyzer is mapped, the index'sdefault analyzer is used.`auto_generate_synonyms_phrase_query`::+--(Optional, boolean) If `true`, <<query-dsl-match-query-phrase,match phrase>>queries are automatically created for multi-term synonyms. Defaults to `true`.See <<query-dsl-match-query-synonyms,Use synonyms with match query>> for anexample.--`fuzziness`::(Optional, string) Maximum edit distance allowed for matching. See <<fuzziness>>for valid values and more information. See <<query-dsl-match-query-fuzziness>>for an example.`max_expansions`::(Optional, integer) Maximum number of terms to which the query willexpand. Defaults to `50`.`prefix_length`::(Optional, integer) Number of beginning characters left unchanged for fuzzymatching. Defaults to `0`.`transpositions`::(Optional, boolean) If `true`, edits for fuzzy matching includetranspositions of two adjacent characters (ab → ba). Defaults to `true`.`fuzzy_rewrite`::+--(Optional, string) Method used to rewrite the query. See the<<query-dsl-multi-term-rewrite, `rewrite` parameter>> for valid values and moreinformation.If the `fuzziness` parameter is not `0`, the `match` query uses a `rewrite`method of `top_terms_blended_freqs_${max_expansions}` by default.--`lenient`::(Optional, boolean) If `true`, format-based errors, such as providing a text`query` value for a <<number,numeric>> field, are ignored. Defaults to `false`.`operator`::+--(Optional, string) Boolean logic used to interpret text in the `query` value.Valid values are:`OR` (Default)::For example, a `query` value of `capital of Hungary` is interpreted as `capitalOR of OR Hungary`.`AND`::For example, a `query` value of `capital of Hungary` is interpreted as `capitalAND of AND Hungary`.--`minimum_should_match`::+--(Optional, string) Minimum number of clauses that must match for a document tobe returned. See the <<query-dsl-minimum-should-match, `minimum_should_match`parameter>> for valid values and more information.--`zero_terms_query`::+--(Optional, string) Indicates whether no documents are returned if the `analyzer`removes all tokens, such as when using a `stop` filter. Valid values are:`none` (Default)::No documents are returned if the `analyzer` removes all tokens.`all`::Returns all documents, similar to a <<query-dsl-match-all-query,`match_all`>>query.See <<query-dsl-match-query-zero>> for an example.--[[match-query-notes]]==== Notes[[query-dsl-match-query-short-ex]]===== Short request exampleYou can simplify the match query syntax by combining the `<field>` and `query`parameters. For example:[source,console]----GET /_search{    "query": {        "match" : {            "message" : "this is a test"        }    }}----[[query-dsl-match-query-boolean]]===== How the match query worksThe `match` query is of type `boolean`. It means that the textprovided is analyzed and the analysis process constructs a boolean queryfrom the provided text. The `operator` parameter can be set to `or` or `and`to control the boolean clauses (defaults to `or`). The minimum number ofoptional `should` clauses to match can be set using the<<query-dsl-minimum-should-match,`minimum_should_match`>>parameter.Here is an example with the `operator` parameter:[source,console]--------------------------------------------------GET /_search{    "query": {        "match" : {            "message" : {                "query" : "this is a test",                "operator" : "and"            }        }    }}--------------------------------------------------The `analyzer` can be set to control which analyzer will perform theanalysis process on the text. It defaults to the field explicit mappingdefinition, or the default search analyzer.The `lenient` parameter can be set to `true` to ignore exceptions caused bydata-type mismatches,  such as trying to query a numeric field with a textquery string. Defaults to `false`.[[query-dsl-match-query-fuzziness]]===== Fuzziness in the match query`fuzziness` allows _fuzzy matching_ based on the type of field being queried.See <<fuzziness>> for allowed settings.The `prefix_length` and`max_expansions` can be set in this case to control the fuzzy process.If the fuzzy option is set the query will use `top_terms_blended_freqs_${max_expansions}`as its <<query-dsl-multi-term-rewrite,rewritemethod>> the `fuzzy_rewrite` parameter allows to control how the query will getrewritten.Fuzzy transpositions (`ab` -> `ba`) are allowed by default but can be disabledby setting `fuzzy_transpositions` to `false`.NOTE: Fuzzy matching is not applied to terms with synonyms or in cases where theanalysis process produces multiple tokens at the same position. Under the hoodthese terms are expanded to a special synonym query that blends term frequencies,which does not support fuzzy expansion.[source,console]--------------------------------------------------GET /_search{    "query": {        "match" : {            "message" : {                "query" : "this is a testt",                "fuzziness": "AUTO"            }        }    }}--------------------------------------------------[[query-dsl-match-query-zero]]===== Zero terms queryIf the analyzer used removes all tokens in a query like a `stop` filterdoes, the default behavior is to match no documents at all. In order tochange that the `zero_terms_query` option can be used, which accepts`none` (default) and `all` which corresponds to a `match_all` query.[source,console]--------------------------------------------------GET /_search{    "query": {        "match" : {            "message" : {                "query" : "to be or not to be",                "operator" : "and",                "zero_terms_query": "all"            }        }    }}--------------------------------------------------[[query-dsl-match-query-synonyms]]===== SynonymsThe `match` 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:``(ny OR ("new york"))`It is also possible to match multi terms synonyms with conjunctions instead:[source,console]--------------------------------------------------GET /_search{   "query": {       "match" : {           "message": {               "query" : "ny city",               "auto_generate_synonyms_phrase_query" : false           }       }   }}--------------------------------------------------The example above creates a boolean query:`(ny OR (new AND york)) city`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`.
 |