Создание или обновление приложения поиска
Эта функциональность находится в стадии бета-тестирования и может быть изменена. Дизайн и код менее зрелые, чем официальные функции GA, и предоставляются как есть без каких-либо гарантий. Для функций бета-версии не распространяется SLA поддержки официальных функций GA.
Создает или обновляет приложение поиска.
Запрос
PUT _application/search_application/<name>
Предварительные условия
Требуется право manage_search_application кластера. Также требуется право управления индексами для всех индексов, которые добавляются в приложение поиска.
Параметры пути
-
create - (Необязательно, логическое значение) Если
true, этот запрос не может заменить или обновить существующие приложения поиска. По умолчаниюfalse. -
<body> -
(Обязательно, объект) Содержит параметры для приложения поиска:
Свойства объектов
<body>-
indices - (Обязательно, массив строк) Индексы, связанные с этим приложением поиска. Все индексы должны существовать, чтобы быть добавленными в приложение поиска.
-
template -
(Необязательно, объект) Шаблон поиска, связанный с этим приложением поиска. Шаблон приложения поиска хранится и доступен только через само приложение поиска.
- Этот шаблон поиска должен быть шаблоном Mustache.
- Шаблон должен содержать скрипт Mustache и исходный код скрипта.
- Шаблон можно изменить с помощью последующих запросов создания/обновления приложения поиска.
- Если шаблон не указан при создании приложения поиска или шаблон удаляется из приложения поиска, используется запрос с использованием query_string, определённый в примерах шаблонов, в качестве значения по умолчанию.
- Этот шаблон будет использоваться API поиска приложения для выполнения запросов.
- Шаблон принимает необязательный параметр
dictionary, который определяет JSON схему, используемую для проверки параметров, отправленных в API поиска приложения.
Свойства
<template>-
script - (Обязательно, объект) Связанный шаблон Mustache.
-
dictionary - (Необязательно, объект) Словарь, используемый для проверки параметров, используемых с API поиска приложения. Словарь должен быть допустимым JSON схемой. Если
dictionaryне указан, параметры не будут проверены перед применением в шаблоне.
-
Коды ответов
-
404 - Приложение поиска
<name>не существует. -
409 - Приложение поиска
<name>существует иcreateимеет значениеtrue.
Примеры
В следующем примере создается или обновляется новое приложение поиска под названием my-app:
resp = client.search_application.put(
name="my-app",
search_application={
"indices": [
"index1",
"index2"
],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
},
"dictionary": {
"properties": {
"query_string": {
"type": "string"
},
"default_field": {
"type": "string",
"enum": [
"title",
"description"
]
},
"additionalProperties": False
},
"required": [
"query_string"
]
}
}
},
)
print(resp) const response = await client.searchApplication.put({
name: "my-app",
search_application: {
indices: ["index1", "index2"],
template: {
script: {
source: {
query: {
query_string: {
query: "{{query_string}}",
default_field: "{{default_field}}",
},
},
},
params: {
query_string: "*",
default_field: "*",
},
},
dictionary: {
properties: {
query_string: {
type: "string",
},
default_field: {
type: "string",
enum: ["title", "description"],
},
additionalProperties: false,
},
required: ["query_string"],
},
},
},
});
console.log(response); PUT _application/search_application/my-app
{
"indices": [ "index1", "index2" ],
"template": {
"script": {
"source": {
"query": {
"query_string": {
"query": "{{query_string}}",
"default_field": "{{default_field}}"
}
}
},
"params": {
"query_string": "*",
"default_field": "*"
}
},
"dictionary": {
"properties": {
"query_string": {
"type": "string"
},
"default_field": {
"type": "string",
"enum": [
"title",
"description"
]
},
"additionalProperties": false
},
"required": [
"query_string"
]
}
}
} Когда указан параметр dictionary, API поиска приложения выполнит следующую проверку параметров:
- Он принимает только параметры
query_stringиdefault_field - Он проверяет, что
query_stringиdefault_fieldявляются строками - Он принимает
default_fieldтолько если он имеет значенияtitleилиdescription
Если параметры неверны, API поиска приложения вернет ошибку.
resp = client.search_application.search(
name="my-app",
params={
"default_field": "author",
"query_string": "Jane"
},
)
print(resp) const response = await client.searchApplication.search({
name: "my-app",
params: {
default_field: "author",
query_string: "Jane",
},
});
console.log(response); POST _application/search_application/my-app/_search
{
"params": {
"default_field": "author",
"query_string": "Jane"
}
} В приведенном выше примере значение параметра default_field неверно, поэтому Elasticsearch вернёт ошибку:
{
"error": {
"root_cause": [
{
"type": "validation_exception",
"reason": 'Validation Failed: 1: $.default_field: does not have a value in the enumeration [title, description];',
"stack_trace": ...
}
],
"type": "validation_exception",
"reason": 'Validation Failed: 1: $.default_field: does not have a value in the enumeration [title, description];',
"stack_trace": ...
},
"status": 400
}
© 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-search-application.html