term
Поиск документов, содержащих точное соответствие указанному термину в заданном поле
Запрос term (поиск точного термина)
Назначение
Запрос term
выполняет поиск точного соответствия указанному термину в поле. Основные характеристики:
- Ищет неизмененное значение без анализа текста
- Чувствителен к регистру по умолчанию
- Оптимален для полей типа
keyword
, дат и чисел
Базовый синтаксис
GET shakespeare/_search
{
"query": {
"term": {
"line_id": {
"value": "61809"
}
}
}
}
Этот запрос ищет строку с точным значением line_id = "61809"
.
Важные особенности
-
Отличие от match запросов:
term
не анализирует поисковый термин- Не подходит для текстовых полей (
text
), так как они анализируются при индексации - Для текстовых полей используйте
match
запросы
-
Регистронезависимый поиск (начиная с OpenSearch 2.x):
GET shakespeare/_search
{
"query": {
"term": {
"speaker": {
"value": "HAMLET",
"case_insensitive": true
}
}
}
}
Внимание! В версиях OpenSearch 2.x и ранее регистронезависимый поиск может значительно снижать производительность. Рекомендуется:
- Использовать lowercase фильтр при индексации
- Применять термины в нижнем регистре в запросах
Пример ответа
{
"hits": {
"total": {
"value": 1582,
"relation": "eq"
},
"hits": [
{
"_index": "shakespeare",
"_id": "32700",
"_score": 2,
"_source": {
"speaker": "HAMLET",
"text_entry": "[Aside] A little more than kin..."
}
}
]
}
}
Параметры запроса
Синтаксис с параметрами:
GET _search
{
"query": {
"term": {
"<поле>": {
"value": "образец",
...
}
}
}
}
Параметр | Тип данных | Описание | По умолчанию |
---|---|---|---|
value |
Строка | Обязательный. Точное значение для поиска (учитывает регистр и пробелы) | - |
boost |
Число с плавающей точкой | Коэффициент релевантности (>1 - увеличивает, 0-1 - уменьшает) | 1.0 |
_name |
Строка | Имя запроса для тегирования (опционально) | - |
case_insensitive |
Логический | Регистронезависимый поиск (только для OpenSearch 2.x+) | false |
Практические рекомендации
-
Для текстовых полей всегда используйте
match
вместоterm
:// Неправильно (для text полей): { "term": { "description": "quick brown fox" } } // Правильно: { "match": { "description": "quick brown fox" } }
-
Для точных значений (ID, коды, категории):
GET products/_search { "query": { "term": { "product_code": "ABC-123" } } }
-
Комбинируйте с другими запросами:
GET logs/_search { "query": { "bool": { "must": [ { "term": { "status": "error" } }, { "range": { "timestamp": { "gte": "2023-01-01" }}} ] } } }
-
Производительность:
- Для частых запросов добавьте индекс на поле
- Избегайте
case_insensitive
в favor lowercase анализаторов