API шаблонов многократного поиска
Выполняет несколько запросов с шаблонами с помощью одного запроса.
resp = client.msearch_template(
index="my-index",
search_templates=[
{},
{
"id": "my-search-template",
"params": {
"query_string": "hello world",
"from": 0,
"size": 10
}
},
{},
{
"id": "my-other-search-template",
"params": {
"query_type": "match_all"
}
}
],
)
print(resp) response = client.msearch_template(
index: 'my-index',
body: [
{},
{
id: 'my-search-template',
params: {
query_string: 'hello world',
from: 0,
size: 10
}
},
{},
{
id: 'my-other-search-template',
params: {
query_type: 'match_all'
}
}
]
)
puts response const response = await client.msearchTemplate({
index: "my-index",
search_templates: [
{},
{
id: "my-search-template",
params: {
query_string: "hello world",
from: 0,
size: 10,
},
},
{},
{
id: "my-other-search-template",
params: {
query_type: "match_all",
},
},
],
});
console.log(response); GET my-index/_msearch/template
{ }
{ "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
{ }
{ "id": "my-other-search-template", "params": { "query_type": "match_all" }} Запрос
GET <target>/_msearch/template
GET _msearch/template
POST <target>/_msearch/template
POST _msearch/template
Предварительные условия
- Если включены функции безопасности Elasticsearch, у вас должна быть
readправо доступа к индексу для целевого потока данных, индекса или псевдонима. Для поиска в других кластерах см. Удаленные кластеры.
Параметры пути
-
<target> - (Необязательный, строка) Список потоков данных, индексов и псевдонимов, по которым выполняется поиск, разделенный запятыми. Поддерживаются подстановочные знаки (
*). Для поиска по всем потокам данных и индексам опустите этот параметр или используйте*.
Параметры запроса
-
ccs_minimize_roundtrips - (Необязательный, логический) Если
true, сетевые обмены минимизируются для запросов поиска в других кластерах. По умолчаниюtrue. -
max_concurrent_searches - (Необязательный, целое число) Максимальное количество одновременных поисков, которые может выполнить API. По умолчанию
max(1, (# of data nodes * min(search thread pool size, 10))). -
rest_total_hits_as_int - (Необязательный, логический) Если
true, в ответе возвращаетсяhits.totalкак целое число. В противном случае, возвращаетсяhits.totalкак объект. По умолчаниюfalse. -
search_type -
(Необязательный, строка) Тип операции поиска. Доступные варианты:
-
query_then_fetch -
dfs_query_then_fetch
-
-
typed_keys - (Необязательный, логический) Если
true, имена агрегаций и подсказок в ответе будут иметь префиксы со своими типами. По умолчаниюfalse.
Тело запроса
Тело запроса должно быть JSON в формате NDJSON (newline-delimited JSON) в следующем формате:
<header>\n <body>\n <header>\n <body>\n
Каждая <header> и <body> пара представляет собой запрос поиска.
<header> поддерживает те же параметры, что и <header> API многократного поиска. <body> поддерживает те же параметры, что и тело запроса API шаблона поиска.
-
<header> -
(Обязательный, объект) Параметры для ограничения или изменения поиска.
Этот объект необходим для каждого тела запроса поиска, но может быть пустым (
{}) или содержать пустую строку.Свойства объектов
<header>-
allow_no_indices -
(Необязательный, логический) Если
true, запрос не возвращает ошибку, если выражение с подстановкой или значение_allвозвращает только отсутствующие или закрытые индексы.Этот параметр также применим к псевдонимам, которые ссылаются на отсутствующий или закрытый индекс.
-
expand_wildcards -
(Необязательный, строка) Тип индекса, на который могут ссылаться подстановочные знаки. Если запрос может обращаться к потокам данных, этот аргумент определяет, сопоставляются ли подстановочные знаки с скрытыми потоками данных. Поддерживаются значения, разделенные запятыми, например,
open,hidden. Допустимые значения:-
all - Сопоставляет любой поток данных или индекс, включая скрытые.
-
open - Сопоставляет открытые, нескрытые индексы. Также сопоставляет любой нескрытый поток данных.
-
closed - Сопоставляет закрытые, нескрытые индексы. Также сопоставляет любой нескрытый поток данных. Потоки данных не могут быть закрытыми.
-
hidden - Сопоставляет скрытые потоки данных и скрытые индексы. Должен быть объединен с
open,closedили обоими. -
none - Подстановочные знаки не принимаются.
По умолчанию
open. -
-
ignore_unavailable - (Необязательный, логический) Если
true, документы из отсутствующих или закрытых индексов не включаются в ответ. По умолчаниюfalse. -
index -
(Необязательный, строка или массив строк) Потоки данных, индексы и псевдонимы для поиска. Поддерживаются подстановочные знаки (
*). Укажите несколько целей в виде массива.Если этот параметр не указан, используется параметр пути запроса
<target>в качестве резервного варианта. -
preference - (Необязательный, строка) Узел или фрагмент для выполнения поиска. По умолчанию случайный.
-
request_cache - (Необязательный, логический) Если
true, кэш запросов можно использовать для этого поиска. По умолчанию используется настройка уровня индекса. См. Кэш запросов фрагментов. -
routing - (Необязательный, строка) Пользовательское значение маршрутизации, используемое для маршрутизации операций поиска на определенный фрагмент.
-
search_type -
(Необязательный, строка) Указывает, следует ли использовать глобальные частоты терминов и документов при оценке возвращенных документов.
Варианты:
-
query_then_fetch - (по умолчанию) Документы оцениваются с использованием локальных частот терминов и документов для фрагмента. Обычно быстрее, но менее точно.
-
dfs_query_then_fetch - Документы оцениваются с использованием глобальных частот терминов и документов по всем фрагментам. Обычно медленнее, но точнее.
-
-
-
<body> -
(Запрос, объект) Параметры для поиска.
-
explain - (Необязательный, логический) Если
true, возвращаются подробные сведения о расчете оценки в качестве части каждого совпадения. По умолчаниюfalse. -
id - (Обязательный*, строка) Идентификатор используемого шаблона поиска. Если
sourceне указан, этот параметр обязателен. -
params - (Необязательный, объект) Пара-значение, используемые для замены переменных Mustache в шаблоне. Ключ - имя переменной. Значение - значение переменной.
-
profile - (Необязательный, логический) Если
true, выполняется профилирование выполнения запроса. По умолчаниюfalse. -
source -
(Обязательный*, объект) Встроенный шаблон поиска. Поддерживает те же параметры, что и тело запроса API поиска. Также поддерживает переменные Mustache.
Если нет
id, этот параметр обязателен.
-
Коды ответов
API возвращает код состояния 400 только если сам запрос завершился неудачей. Если один или несколько поисков в запросе завершаются неудачей, API возвращает код состояния 200 с объектом error для каждого неудачного поиска в ответе.
Тело ответа
-
responses -
(массив объектов) Результаты каждого поиска, возвращаются в порядке отправки. Каждый объект использует те же свойства, что и ответ API поиска.
Если поиск завершается неудачей, ответ включает объект
error, содержащий сообщение об ошибке.
Запросы curl
Если вы предоставляете текстовый файл или текстовый ввод в curl, используйте флаг --data-binary вместо -d для сохранения переносов строк.
$ cat requests
{ "index": "my-index" }
{ "id": "my-search-template", "params": { "query_string": "hello world", "from": 0, "size": 10 }}
{ "index": "my-other-index" }
{ "id": "my-other-search-template", "params": { "query_type": "match_all" }}
$ curl -H "Content-Type: application/x-ndjson" -XGET localhost:9200/_msearch/template --data-binary "@requests"; echo
© 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/multi-search-template.html