99 lines
2.7 KiB
Markdown
99 lines
2.7 KiB
Markdown
|
---
|
||
|
layout: default
|
||
|
title: Term
|
||
|
parent: Term-level queries
|
||
|
grand_parent: Query DSL
|
||
|
nav_order: 70
|
||
|
---
|
||
|
|
||
|
# Term query
|
||
|
|
||
|
Use the `term` query to search for an exact term in a field. For example, the following query searches for a line with an exact line number:
|
||
|
|
||
|
```json
|
||
|
GET shakespeare/_search
|
||
|
{
|
||
|
"query": {
|
||
|
"term": {
|
||
|
"line_id": {
|
||
|
"value": "61809"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
{% include copy-curl.html %}
|
||
|
|
||
|
When a document is indexed, the `text` fields are [analyzed]({{site.url}}{{site.baseurl}}/analyzers/index/). Analysis includes tokenizing and lowercasing the text and removing punctuation. Unlike `match` queries, which analyze the query text, `term` queries only match the exact term and thus may not return relevant results. Avoid using `term` queries on `text` fields. For more information, see [Term-level and full-text queries compared]({{site.url}}{{site.baseurl}}/query-dsl/term-vs-full-text/).
|
||
|
|
||
|
You can specify that the query should be case insensitive in the `case_insensitive` parameter:
|
||
|
|
||
|
```json
|
||
|
GET shakespeare/_search
|
||
|
{
|
||
|
"query": {
|
||
|
"term": {
|
||
|
"speaker": {
|
||
|
"value": "HAMLET",
|
||
|
"case_insensitive": true
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
{% include copy-curl.html %}
|
||
|
|
||
|
The response contains the matching documents despite any differences in case:
|
||
|
|
||
|
```json
|
||
|
"hits": {
|
||
|
"total": {
|
||
|
"value": 1582,
|
||
|
"relation": "eq"
|
||
|
},
|
||
|
"max_score": 2,
|
||
|
"hits": [
|
||
|
{
|
||
|
"_index": "shakespeare",
|
||
|
"_id": "32700",
|
||
|
"_score": 2,
|
||
|
"_source": {
|
||
|
"type": "line",
|
||
|
"line_id": 32701,
|
||
|
"play_name": "Hamlet",
|
||
|
"speech_number": 9,
|
||
|
"line_number": "1.2.66",
|
||
|
"speaker": "HAMLET",
|
||
|
"text_entry": "[Aside] A little more than kin, and less than kind."
|
||
|
}
|
||
|
},
|
||
|
...
|
||
|
}
|
||
|
```
|
||
|
|
||
|
## Parameters
|
||
|
|
||
|
The query accepts the name of the field (`<field>`) as a top-level parameter:
|
||
|
|
||
|
```json
|
||
|
GET _search
|
||
|
{
|
||
|
"query": {
|
||
|
"term": {
|
||
|
"<field>": {
|
||
|
"value": "sample",
|
||
|
...
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
{% include copy-curl.html %}
|
||
|
|
||
|
The `<field>` accepts the following parameters. All parameters except `value` are optional.
|
||
|
|
||
|
Parameter | Data type | Description
|
||
|
:--- | :--- | :---
|
||
|
`value` | String | The term to search for in the field specified in `<field>`. A document is returned in the results only if its field value exactly matches the term, with the correct spacing and capitalization.
|
||
|
`boost` | Floating-point | Boosts the query by the given multiplier. Useful for searches that contain more than one query. Values in the [0, 1) range decrease relevance, and values greater than 1 increase relevance. Default is `1`.
|
||
|
`case_insensitive` | Boolean | If `true`, allows case-insensitive matching of the value with the indexed field values. Default is `false` (case sensitivity is determined by the field's mapping).
|