API множественного получения (mget)
Возвращает несколько JSON документов по ID.
GET /_mget
{
"docs": [
{
"_index": "my-index-000001",
"_id": "1"
},
{
"_index": "my-index-000001",
"_id": "2"
}
]
} Запрос
GET /_mget
GET /<index>/_mget
Предварительные условия
- Если функции безопасности Elasticsearch включены, у вас должны быть права
readна индекс для целевого индекса или псевдонима индекса.
Описание
Вы используете mget для получения нескольких документов из одного или нескольких индексов. Если вы указываете индекс в URI запроса, вам нужно указать только ID документов в теле запроса.
Безопасность
Частичные ответы
Для обеспечения быстрых ответов API множественного получения возвращает частичные результаты, если один или несколько фрагментов завершились с ошибкой. Подробнее см. Ошибки фрагментов.
Параметры пути
-
<index> - (Необязательно, строка) Название индекса для получения документов, когда
idsуказаны или когда документ в массивеdocsне указывает индекс.
Параметры запроса
-
preference - (Необязательно, строка) Указывает узел или фрагмент, на котором должна выполняться операция. По умолчанию случайный.
-
realtime - (Необязательно, булево) Если
true, запрос является реального времени, а не околореального времени. По умолчаниюtrue. См. Реальное время. -
refresh - (Необязательно, булево) Если
true, запрос обновляет соответствующие фрагменты перед получением документов. По умолчаниюfalse. -
routing - (Необязательно, строка) Пользовательское значение, используемое для маршрутизации операций на определённый фрагмент.
-
stored_fields - (Необязательно, строка) Список значений, разделенных запятыми, для
stored fieldsвключения в ответ. -
_source - (Необязательно, строка) Значение "true" или "false" для возврата поля
_sourceили списка полей для возврата. -
_source_excludes -
(Необязательно, строка) Список значений, разделенных запятыми, полей source для исключения из ответа.
Вы также можете использовать этот параметр для исключения полей из подмножества, указанного в параметре запроса
_source_includes.Если параметр
_sourceравенfalse, этот параметр игнорируется. -
_source_includes -
(Необязательно, строка) Список значений, разделенных запятыми, полей source для включения в ответ.
Если этот параметр указан, возвращаются только эти поля source. Вы можете исключить поля из этого подмножества, используя параметр запроса
_source_excludes.Если параметр
_sourceравенfalse, этот параметр игнорируется.
Тело запроса
-
docs -
(Необязательно, массив) Документы, которые вы хотите получить. Требуется, если индекс не указан в URI запроса. Вы можете указать следующие атрибуты для каждого документа:
-
_id - (Обязательно, строка) Уникальный ID документа.
-
_index - (Необязательно, строка) Индекс, содержащий документ. Требуется, если индекс не указан в URI запроса.
-
routing - (Необязательно, строка) Ключ первичного фрагмента, на котором находится документ. Требуется, если при индексировании используется маршрутизация.
-
_source -
(Необязательно, булево) Если
false, исключает все поля_source. По умолчаниюtrue.-
source_include - (Необязательно, массив) Поля для извлечения и возврата из поля
_source. -
source_exclude - (Необязательно, массив) Поля для исключения из возвращаемого поля
_source.
-
-
_stored_fields - (Необязательно, массив) Сохраненные поля, которые вы хотите получить.
-
-
ids - (Необязательно, массив) ID документов, которые вы хотите получить. Разрешено, когда индекс указан в URI запроса.
Тело ответа
Ответ включает массив docs, содержащий документы в порядке, указанном в запросе. Структура возвращаемых документов аналогична той, что возвращается API get. Если при получении конкретного документа произошла ошибка, ошибка включается вместо документа.
Примеры
Получение документов по ID
Если вы указываете индекс в URI запроса, требуются только ID документов в теле запроса:
GET /my-index-000001/_mget
{
"docs": [
{
"_type": "_doc",
"_id": "1"
},
{
"_type": "_doc",
"_id": "2"
}
]
} И тип:
GET /test/_doc/_mget
{
"docs": [
{
"_id": "1"
},
{
"_id": "2"
}
]
} Вы можете использовать элемент ids для упрощения запроса:
GET /my-index-000001/_mget
{
"ids" : ["1", "2"]
} Фильтрация полей source
По умолчанию поле _source возвращается для каждого документа (если оно сохранено). Используйте атрибуты _source и _source_include или source_exclude, чтобы отфильтровать, какие поля возвращаются для конкретного документа. Вы можете включить параметры запроса _source, _source_includes и _source_excludes в URI запроса, чтобы указать значения по умолчанию, используемые при отсутствии инструкций для каждого документа.
Например, следующий запрос устанавливает _source в false для документа 1, чтобы полностью исключить source, извлекает field3 и field4 из документа 2 и извлекает поле user из документа 3, но фильтрует поле user.location.
GET /_mget
{
"docs": [
{
"_index": "test",
"_type": "_doc",
"_id": "1",
"_source": false
},
{
"_index": "test",
"_type": "_doc",
"_id": "2",
"_source": [ "field3", "field4" ]
},
{
"_index": "test",
"_type": "_doc",
"_id": "3",
"_source": {
"include": [ "user" ],
"exclude": [ "user.location" ]
}
}
]
} Получение сохраненных полей
Используйте атрибут stored_fields для указания набора сохраненных полей, которые вы хотите получить. Любые запрошенные поля, которые не сохраняются, игнорируются. Вы можете включить параметр запроса stored_fields в URI запроса, чтобы указать значения по умолчанию, используемые при отсутствии инструкций для каждого документа.
Например, следующий запрос извлекает field1 и field2 из документа 1 и field3 и field4 из документа 2:
GET /_mget
{
"docs": [
{
"_index": "test",
"_type": "_doc",
"_id": "1",
"stored_fields": [ "field1", "field2" ]
},
{
"_index": "test",
"_type": "_doc",
"_id": "2",
"stored_fields": [ "field3", "field4" ]
}
]
} Следующий запрос извлекает field1 и field2 по умолчанию для всех документов. Эти поля по умолчанию возвращаются для документа 1, но переопределяются на возвращение field3 и field4 для документа 2.
GET /test/_doc/_mget?stored_fields=field1,field2
{
"docs": [
{
"_id": "1"
},
{
"_id": "2",
"stored_fields": [ "field3", "field4" ]
}
]
} Указание маршрутизации документа
Если при индексировании используется маршрутизация, вам необходимо указать значение маршрутизации для получения документов. Например, следующий запрос извлекает test/_doc/2 из фрагмента, соответствующего ключу маршрутизации key1, и извлекает test/_doc/1 из фрагмента, соответствующего ключу маршрутизации key2.
GET /_mget?routing=key1
{
"docs": [
{
"_index": "test",
"_type": "_doc",
"_id": "1",
"routing": "key2"
},
{
"_index": "test",
"_type": "_doc",
"_id": "2"
}
]
}
© 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/docs-multi-get.html
|
|