| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | [[query-dsl-term-query]]=== Term query++++<titleabbrev>Term</titleabbrev>++++Returns documents that contain an *exact* term in a provided field.You can use the `term` query to find documents based on a precise value such asa price, a product ID, or a username.[WARNING]====Avoid using the `term` query for <<text, `text`>> fields.By default, {es} changes the values of `text` fields as part of <<analysis,analysis>>. This can make finding exact matches for `text` field valuesdifficult.To search `text` field values, use the <<query-dsl-match-query,`match`>> queryinstead.====[[term-query-ex-request]]==== Example request[source,console]----GET /_search{  "query": {    "term": {      "user.id": {        "value": "kimchy",        "boost": 1.0      }    }  }}----[[term-top-level-params]]==== Top-level parameters for `term``<field>`::(Required, object) Field you wish to search.[[term-field-params]]==== Parameters for `<field>``value`::(Required, string) Term you wish to find in the provided `<field>`. To return adocument, the term must exactly match the field value, including whitespace andcapitalization.`boost`::(Optional, float) Floating point number used to decrease or increase the<<relevance-scores,relevance scores>> of a query. Defaults to `1.0`.+You can use the `boost` parameter to adjust relevance scores for searchescontaining two or more queries.+Boost values are relative to the default value of `1.0`. A boost value between`0` and `1.0` decreases the relevance score. A value greater than `1.0`increases the relevance score.`case_insensitive`::(Optional, boolean) allows ASCII case insensitive matching of thevalue with the indexed field values when set to true. Setting to false is disallowed.[[term-query-notes]]==== Notes[[avoid-term-query-text-fields]]===== Avoid using the `term` query for `text` fieldsBy default, {es} changes the values of `text` fields during analysis. Forexample, the default <<analysis-standard-analyzer, standard analyzer>> changes`text` field values as follows:* Removes most punctuation* Divides the remaining content into individual words, called<<analysis-tokenizers, tokens>>* Lowercases the tokensTo better search `text` fields, the `match` query also analyzes your providedsearch term before performing a search. This means the `match` query can search`text` fields for analyzed tokens rather than an exact term.The `term` query does *not* analyze the search term. The `term` query onlysearches for the *exact* term you provide. This means the `term` query mayreturn poor or no results when searching `text` fields.To see the difference in search results, try the following example.. Create an index with a `text` field called `full_text`.+--[source,console]----PUT my-index-000001{  "mappings": {    "properties": {      "full_text": { "type": "text" }    }  }}------. Index a document with a value of `Quick Brown Foxes!` in the `full_text`field.+--[source,console]----PUT my-index-000001/_doc/1{  "full_text":   "Quick Brown Foxes!"}----// TEST[continued]Because `full_text` is a `text` field, {es} changes `Quick Brown Foxes!` to`[quick, brown, fox]` during analysis.--. Use the `term` query to search for `Quick Brown Foxes!` in the `full_text`field. Include the `pretty` parameter so the response is more readable.+--[source,console]----GET my-index-000001/_search?pretty{  "query": {    "term": {      "full_text": "Quick Brown Foxes!"    }  }}----// TEST[continued]Because the `full_text` field no longer contains the *exact* term `Quick BrownFoxes!`, the `term` query search returns no results.--. Use the `match` query to search for `Quick Brown Foxes!` in the `full_text`field.+--////[source,console]----POST my-index-000001/_refresh----// TEST[continued]////[source,console]----GET my-index-000001/_search?pretty{  "query": {    "match": {      "full_text": "Quick Brown Foxes!"    }  }}----// TEST[continued]Unlike the `term` query, the `match` query analyzes your provided search term,`Quick Brown Foxes!`, before performing a search. The `match` query then returnsany documents containing the `quick`, `brown`, or `fox` tokens in the`full_text` field.Here's the response for the `match` query search containing the indexed documentin the results.[source,console-result]----{  "took" : 1,  "timed_out" : false,  "_shards" : {    "total" : 1,    "successful" : 1,    "skipped" : 0,    "failed" : 0  },  "hits" : {    "total" : {      "value" : 1,      "relation" : "eq"    },    "max_score" : 0.8630463,    "hits" : [      {        "_index" : "my-index-000001",        "_id" : "1",        "_score" : 0.8630463,        "_source" : {          "full_text" : "Quick Brown Foxes!"        }      }    ]  }}----// TESTRESPONSE[s/"took" : 1/"took" : $body.took/]--
 |