Создание или обновление правила запроса
Создает или обновляет отдельное правило запроса в наборе правил запросов.
Запрос
PUT _query_rules/<ruleset_id>/_rule/<rule_id>
Предварительные условия
Требуется привилегия manage_search_query_rules.
(Обязательно, объект) Содержит параметры для правила запроса:
Тело запроса
-
type -
(Обязательно, строка) Тип правила. В настоящее время разрешены следующие типы правил запросов:
-
pinnedпозволит определить и закрепить конкретные документы в верхней части результатов поиска. -
excludeпозволит исключить конкретные документы из результатов поиска.
-
-
criteria - (Обязательно, массив объектов) Критерии, которые должны быть выполнены для применения правила. Если для правила указано несколько критериев, все критерии должны быть выполнены для применения правила.
Критерии должны содержать следующую информацию:
-
type(Обязательно, строка) Тип критериев. Поддерживаются следующие типы критериев:-
exactТолько точные совпадения удовлетворяют критериям, определённым правилом. Применимо для строковых или числовых значений. -
fuzzyТочные совпадения или совпадения в пределах разрешённого расстояния Левенштейна удовлетворяют критериям, определённым правилом. Применимо только для строковых значений. -
prefixСовпадения, начинающиеся с этого значения, удовлетворяют критериям, определённым правилом. Применимо только для строковых значений. -
suffixСовпадения, заканчивающиеся этим значением, удовлетворяют критериям, определённым правилом. Применимо только для строковых значений. -
containsСовпадения, содержащие это значение в поле, удовлетворяют критериям, определённым правилом. Применимо только для строковых значений. -
ltСовпадения со значением меньше этого значения удовлетворяют критериям, определённым правилом. Применимо только для числовых значений. -
lteСовпадения со значением меньше или равным этому значению удовлетворяют критериям, определённым правилом. Применимо только для числовых значений. -
gtСовпадения со значением больше этого значения удовлетворяют критериям, определённым правилом. Применимо только для числовых значений. -
gteСовпадения со значением больше или равным этому значению удовлетворяют критериям, определённым правилом. Применимо только для числовых значений. -
alwaysСовпадения со всеми запросами, независимо от ввода.
-
-
metadata(Необязательно, строка) Поле метаданных для сравнения. Эти метаданные будут использоваться для сопоставления сmatch_criteria, отправленным в правило. Требуется для всех типов критериев, кромеalways. -
values(Необязательно, массив строк) Значения для сравнения с полем метаданных. Для удовлетворения критерия должно совпасть только одно значение. Требуется для всех типов критериев, кромеalways.-
actions - (Обязательно, объект) Действия, которые необходимо выполнить при совпадении правила. Формат этого действия зависит от типа правила.
-
Действия зависят от типа правила. Для правил pinned или exclude разрешены следующие действия:
-
ids(Необязательно, массив строк) Уникальные идентификаторы документов документов, к которым будет применено правило. Только одно изidsилиdocsможет быть указано, и хотя бы одно должно быть указано. -
docs(Необязательно, массив объектов) Документы, к которым будет применено правило. Только одно изidsилиdocsможет быть указано, и хотя бы одно должно быть указано. Максимальное значение — 100 документов в правиле. Вы можете указать следующие атрибуты для каждого документа:-
_index(Обязательно, строка) Индекс документа. Если null, все документы со значением_idбудут затронуты во всех индексах поиска. -
_id(Обязательно, строка) Уникальный идентификатор документа.
-
Из-за ограничений в закреплённых запросах, вы можете закреплять документы только с использованием ids или docs, но не можете использовать оба в одном правиле. Рекомендуется использовать одно или другое в наборах правил запросов, чтобы избежать ошибок. Кроме того, закреплённые запросы имеют максимальный лимит в 100 закреплённых результатов. Если несколько соответствующих правил закрепляют более 100 документов, только первые 100 документов закрепляются в порядке их указания в наборе правил.
Примеры
В следующем примере создается новое правило запроса с идентификатором my-rule1 в наборе правил запросов под названием my-ruleset.
-
my-rule1выберет документы для продвижения с идентификаторамиid1иid2, когдаuser_queryсодержитpugsилиpugglesиuser_countryточно соответствуетus.
resp = client.query_rules.put_rule(
ruleset_id="my-ruleset",
rule_id="my-rule1",
type="pinned",
criteria=[
{
"type": "contains",
"metadata": "user_query",
"values": [
"pugs",
"puggles"
]
},
{
"type": "exact",
"metadata": "user_country",
"values": [
"us"
]
}
],
actions={
"ids": [
"id1",
"id2"
]
},
)
print(resp) const response = await client.transport.request({
method: "PUT",
path: "/_query_rules/my-ruleset/_rule/my-rule1",
body: {
type: "pinned",
criteria: [
{
type: "contains",
metadata: "user_query",
values: ["pugs", "puggles"],
},
{
type: "exact",
metadata: "user_country",
values: ["us"],
},
],
actions: {
ids: ["id1", "id2"],
},
},
});
console.log(response); PUT _query_rules/my-ruleset/_rule/my-rule1
{
"type": "pinned",
"criteria": [
{
"type": "contains",
"metadata": "user_query",
"values": [ "pugs", "puggles" ]
},
{
"type": "exact",
"metadata": "user_country",
"values": [ "us" ]
}
],
"actions": {
"ids": [
"id1",
"id2"
]
}
}
© 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/put-query-rule.html