API шаблона многократного поиска
Выполняет несколько шаблонных поисков с помощью одного запроса.
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как целое число. Если false, возвращается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/7.17/multi-search-template.html