Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›REST API ›API правил запросов

Создание или обновление правила запроса

Новая справка по API

Для получения самых последних данных об API обратитесь к API правил запросов.

Создает или обновляет отдельное правило запроса в наборе правил запросов.

Запрос

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API