Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›API поиска

API шаблонов многократного поиска

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

Для получения самых актуальных данных API обратитесь к 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

Spec-Zone.ru

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