Spec-Zone.ru › Elasticsearch 7
›Руководство по Elasticsearch [7.17] ›REST API ›API поиска

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

Spec-Zone.ru

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