prefix
Поиск документов, содержащих термины с указанным префиксом
Запрос prefix (поиск по префиксу)
Назначение
Запрос prefix
выполняет поиск терминов, начинающихся с указанной приставки (префикса). Используется для:
- Автодополнения
- Поиска по начальным символам
- Классификации данных с общими префиксами
Базовый синтаксис
GET shakespeare/_search
{
"query": {
"prefix": {
"speaker": "KING H"
}
}
}
Этот запрос ищет документы, где поле speaker
содержит термины, начинающиеся на “KING H”.
Расширенный синтаксис с параметрами
GET shakespeare/_search
{
"query": {
"prefix": {
"speaker": {
"value": "KING H",
"boost": 1.5,
"case_insensitive": true,
"rewrite": "scoring_boolean"
}
}
}
}
Параметры запроса
Параметр | Тип данных | Описание | По умолчанию |
---|---|---|---|
value |
Строка | Обязательный. Искомый префикс | - |
boost |
Число с плавающей точкой | Коэффициент усиления релевантности (>1 - увеличивает, 0-1 - уменьшает) | 1.0 |
case_insensitive |
Логический | Регистронезависимый поиск. Если true , игнорирует регистр символов |
false |
rewrite |
Строка | Метод перезаписи запроса. Допустимые значения: constant_score , scoring_boolean и др. |
constant_score |
Особенности работы
-
Производительность:
- При включенной настройке
index_prefixes
в маппинге поля запрос выполняется оптимально - При
search.allow_expensive_queries=false
запросыprefix
не выполняются (кроме случаев сindex_prefixes
)
- При включенной настройке
-
Регистр символов:
- По умолчанию поиск чувствителен к регистру
- Для регистронезависимого поиска используйте
"case_insensitive": true
-
Примеры использования:
// Поиск продуктов с кодом, начинающимся на "A12" GET products/_search { "query": { "prefix": { "product_code": "A12" } } } // Поиск городов, названия которых начинаются на "сан" GET cities/_search { "query": { "prefix": { "name": { "value": "сан", "case_insensitive": true } } } }
-
Рекомендации:
- Для полей с длинными значениями установите
index_prefixes
в маппинге - Избегайте очень коротких префиксов (1-2 символа) на больших индексах
- Для сложных сценариев автодополнения рассмотрите
completion
suggester
- Для полей с длинными значениями установите