API поиска SQL
Возвращает результаты SQL-поиска.
resp = client.sql.query(
format="txt",
query="SELECT * FROM library ORDER BY page_count DESC LIMIT 5",
)
print(resp) const response = await client.sql.query({
format: "txt",
query: "SELECT * FROM library ORDER BY page_count DESC LIMIT 5",
});
console.log(response); POST _sql?format=txt
{
"query": "SELECT * FROM library ORDER BY page_count DESC LIMIT 5"
} Запрос
GET _sql
POST _sql
Предварительные требования
- Если включены функции безопасности Elasticsearch, у вас должен быть
readправо доступа к индексу для потока данных, индекса или псевдонима, по которому вы производите поиск.
Ограничения
См. Ограничения SQL.
Параметры запроса
-
delimiter - (Необязательно, строка) Разделитель для результатов CSV. По умолчанию
,. API поддерживает этот параметр только для ответов в формате CSV. -
format -
(Необязательно, строка) Формат ответа. Для допустимых значений см. Форматы данных ответа.
Формат также можно указать с помощью HTTP-заголовка
Accept. Если вы укажете как этот параметр, так и HTTP-заголовокAccept, приоритет будет иметь этот параметр.
Тело запроса
-
allow_partial_search_results - (Необязательно, логическое значение) Если
true, возвращает частичные результаты при наличии таймаутов запросов фрагментов или неисправностей фрагментов. Еслиfalse, возвращает ошибку без частичных результатов. По умолчаниюfalse. -
catalog -
(Необязательно, строка) Каталог (кластер) по умолчанию для запросов. Если не указано, запросы выполняются только с данными в локальном кластере.
[preview] Эта функциональность находится в техническом предварительном просмотре и может быть изменена или удалена в будущих выпусках. Elastic будет работать над исправлением проблем, но функции предварительного просмотра не подпадают под SLA поддержки официальных функций GA. См. поиск по нескольким кластерам.
-
columnar - (Необязательно, логическое значение) Если
true, возвращает результаты в столбцовом формате. По умолчаниюfalse. API поддерживает этот параметр только для ответов в форматах CBOR, JSON, SMILE и YAML. См. Столбцовые результаты. -
cursor - (Необязательно, строка) Маркер для получения набора результатов с пагинацией. Если вы укажите
cursor, API использует только параметры тела запросаcolumnarиtime_zone. Другие параметры тела запроса будут игнорироваться.
-
fetch_size - (Необязательно, целое число) Максимальное количество строк для возврата в ответе. По умолчанию
1000.
-
field_multi_value_leniency - (Необязательно, логическое значение) Если
false, API возвращает ошибку для полей, содержащих массивы. Еслиtrue, API возвращает первое значение из массива без гарантии согласованных результатов. По умолчаниюfalse. -
filter - (Необязательно, объект) Query DSL, используемый для фильтрации документов при SQL-поиске. См. Фильтрация с помощью Elasticsearch Query DSL.
-
index_include_frozen - (Необязательно, логическое значение) Если
true, поиск может выполняться по замороженным индексам. По умолчаниюfalse. -
keep_alive - (Необязательно, значение времени) Период хранения для асинхронного или сохранённого синхронного поиска. По умолчанию
5d(пять дней). -
keep_on_completion - (Необязательно, логическое значение) Если
true, Elasticsearch сохраняет синхронные поиски, если вы также укажете параметрwait_for_completion_timeout. Еслиfalse, Elasticsearch сохраняет только асинхронные поиски, которые не завершаются доwait_for_completion_timeout. По умолчаниюfalse. -
page_timeout - (Необязательно, значение времени) Минимальный период хранения курсора прокрутки. После этого периода запрос пагинации может завершиться ошибкой, потому что курсор прокрутки больше недоступен. Последующие запросы прокрутки продлевают срок действия курсора прокрутки на период
page_timeoutв запросе прокрутки. По умолчанию45s(45 секунд). -
params - (Необязательно, массив) Значения для параметров в
query. Синтаксис см. в Передача параметров в запрос. -
query - (Обязательно, объект) SQL-запрос для выполнения. Синтаксис см. в Языке SQL.
-
request_timeout - (Необязательно, значение времени) Таймаут запроса перед его завершением по ошибке. По умолчанию
90s(90 секунд). -
runtime_mappings -
(Необязательно, объект объектов) Определяет один или несколько динамических полей в запросе поиска. Эти поля имеют приоритет над сопоставленными полями с тем же именем.
Свойства объектов
runtime_mappings-
<field-name> -
(Обязательно, объект) Настройка динамического поля. Ключ — имя поля.
Свойства
<field-name>-
type -
(Обязательно, строка) Тип поля, который может быть одним из следующих:
-
boolean -
composite -
date -
double -
geo_point -
ip -
keyword -
long -
lookup
-
-
script -
(Необязательно, строка) Painless скрипт, выполняемый во время запроса. Скрипт имеет доступ к всему контексту документа, включая исходный
_sourceи любые сопоставленные поля и их значения.Этот скрипт должен включать
emitдля возврата вычисленных значений. Например:"script": "emit(doc['@timestamp'].value.dayOfWeekEnum.toString())"
-
-
-
time_zone - (Необязательно, строка) Идентификатор часового пояса ISO-8601 для поиска. Несколько функций SQL даты/времени используют этот часовой пояс. По умолчанию
Z(UTC). -
wait_for_completion_timeout -
(Необязательно, значение времени) Период ожидания полных результатов. По умолчанию таймаут не задан, то есть запрос ожидает полных результатов поиска. Если поиск не завершится в течение этого периода, поиск становится асинхронным.
Чтобы сохранить синхронный поиск, необходимо указать этот параметр и параметр
keep_on_completion.
Тело ответа
API поиска SQL поддерживает несколько форматов ответа. Большинство форматов ответа используют табличную структуру. JSON-ответы содержат следующие свойства:
-
id - (строка) Идентификатор поиска. Это значение возвращается только для асинхронного и сохранённых синхронных поисков. Для ответов в форматах CSV, TSV и TXT это значение возвращается в заголовке HTTP
Async-ID. -
is_running - (логическое значение) Если
true, поиск всё ещё выполняется. Еслиfalse, поиск завершён. Это значение возвращается только для асинхронного и сохранённых синхронных поисков. Для ответов в форматах CSV, TSV и TXT это значение возвращается в заголовке HTTPAsync-partial. -
is_partial -
(логическое значение) Если
true, ответ не содержит полных результатов поиска. Еслиis_partialравноtrueиis_runningравноtrue, поиск всё ещё выполняется. Еслиis_partialравноtrue, ноis_runningравноfalse, результаты частичные из-за ошибки или таймаута.Это значение возвращается только для асинхронного и сохранённых синхронных поисков. Для ответов в форматах CSV, TSV и TXT это значение возвращается в заголовке HTTP
Async-partial. -
rows - (массив массивов) Значения результатов поиска.
-
columns -
(массив объектов) Заголовки столбцов результатов поиска. Каждый объект представляет столбец.
Свойства объектов
columns-
name - (строка) Название столбца.
-
type - (строка) Тип данных для столбца.
-
-
cursor - (строка) Курсор для следующего набора результатов пагинации. Для ответов в форматах CSV, TSV и TXT это значение возвращается в заголовке HTTP
Cursor.
© 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/sql-search-api.html