Запрос по префиксу
Возвращает документы, содержащие определённый префикс в заданном поле.
Пример запроса
Следующий поиск возвращает документы, где поле user.id содержит термин, начинающийся с ki.
resp = client.search(
query={
"prefix": {
"user.id": {
"value": "ki"
}
}
},
)
print(resp) response = client.search(
body: {
query: {
prefix: {
'user.id' => {
value: 'ki'
}
}
}
}
)
puts response const response = await client.search({
query: {
prefix: {
"user.id": {
value: "ki",
},
},
},
});
console.log(response); GET /_search
{
"query": {
"prefix": {
"user.id": {
"value": "ki"
}
}
}
} Параметры верхнего уровня для prefix
-
<field> - (Обязательно, объект) Поле, которое вы хотите найти.
Параметры для <field>
-
value - (Обязательно, строка) Начальные символы терминов, которые вы хотите найти в указанном поле
<field>. -
rewrite - (Необязательно, строка) Метод, используемый для переписывания запроса. Для допустимых значений и дополнительной информации см.
rewriteпараметр. -
case_insensitive[7.10.0] Добавлено в 7.10.0. - (Необязательно, Булево) Разрешает нечувствительное к регистру соответствие ASCII значения с индексированными значениями поля при установке в true. По умолчанию false, что означает, что чувствительность к регистру при сопоставлении зависит от сопоставления базового поля.
Примечания
Короткий пример запроса
Вы можете упростить синтаксис запроса prefix, объединив параметры <field> и value. Например:
resp = client.search(
query={
"prefix": {
"user": "ki"
}
},
)
print(resp) response = client.search(
body: {
query: {
prefix: {
user: 'ki'
}
}
}
)
puts response const response = await client.search({
query: {
prefix: {
user: "ki",
},
},
});
console.log(response); GET /_search
{
"query": {
"prefix" : { "user" : "ki" }
}
} Ускорение запросов по префиксу
Вы можете ускорить запросы по префиксу, используя параметр сопоставления index_prefixes. При включении Elasticsearch индексирует префиксы в отдельном поле, согласно настройкам конфигурации. Это позволяет Elasticsearch выполнять запросы по префиксу более эффективно за счёт увеличения размера индекса.
Разрешение дорогостоящих запросов
Запросы по префиксу не будут выполнены, если search.allow_expensive_queries установлен в false. Однако, если index_prefixes включены, строится оптимизированный запрос, который не считается медленным и будет выполнен, несмотря на эту настройку.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-prefix-query.html