Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Руководство [8.17] ›SQL ›Язык SQL

Шаблоны индексов

Elasticsearch SQL поддерживает два типа шаблонов для сопоставления нескольких индексов или таблиц:

Синтаксис Elasticsearch для множественных целей

Синтаксис Elasticsearch для перечисления, включения или исключения синтаксиса для множественных целей поддерживается, пока он заключен в кавычки или экранирован как идентификатор таблицы.

Например:

SHOW TABLES "*,-l*";

 catalog       |     name      | type     |     kind
---------------+---------------+----------+---------------
javaRestTest      |emp            |TABLE     |INDEX
javaRestTest      |employees      |VIEW      |ALIAS

Обратите внимание, что шаблон заключен в двойные кавычки ". Он перечисляет *, что означает все индексы, однако он исключает (из-за -) все индексы, начинающиеся с l. Этот синтаксис очень удобен и мощный, так как он позволяет как включать, так и исключать, в зависимости от соглашения об именовании целей.

Тот же вид шаблонов можно использовать для запроса нескольких индексов или таблиц.

Например:

SELECT emp_no FROM "e*p" LIMIT 1;

    emp_no
---------------
10001

Существует ограничение, что все разрешенные конкретные таблицы имеют одинаковую схему.

[preview] Эта функция находится в техническом предварительном просмотре и может быть изменена или удалена в будущих выпусках. Elastic будет работать над устранением любых проблем, но функции в техническом предварительном просмотре не подпадают под SLA поддержки официальных функций GA. Для выполнения поиска по нескольким кластерам, укажите имя кластера, используя синтаксис <remote_cluster>:<target>, где <remote_cluster> отображается на SQL каталог (кластер), а <target> на таблицу (индекс или поток данных). <remote_cluster> поддерживает подстановочные знаки (*), а <target> может быть шаблоном индекса.

Например:

SELECT emp_no FROM "my*cluster:*emp" LIMIT 1;

    emp_no
---------------
10001

SQL LIKE синтаксис

Общее LIKE утверждение (включая экранирование, если необходимо) для сопоставления шаблона с подстановкой, основанного на одном _ или нескольких % символах.

Используя команду SHOW TABLES снова:

SHOW TABLES LIKE 'emp%';

 catalog       |     name      | type     |     kind
---------------+---------------+----------+---------------
javaRestTest      |emp            |TABLE     |INDEX
javaRestTest      |employees      |VIEW      |ALIAS

Шаблон соответствует всем таблицам, начинающимся с emp.

Эта команда также поддерживает экранирование, например:

SHOW TABLES LIKE 'emp!%' ESCAPE '!';

 catalog       |     name      |     type      |     kind
---------------+---------------+---------------+---------------

Обратите внимание, как теперь emp% не соответствует ни одной таблице, потому что %, что означает соответствие нулю или более символам, был экранирован ! и, таким образом, стал обычным символом. И поскольку нет таблицы с именем emp%, возвращается пустая таблица.

Вкратце, различия между двумя типами шаблонов:

Функция

Много индексов

SQL LIKE

Тип кавычек

"

'

Включение

Да

Да

Исключение

Да

Нет

Перечисление

Да

Нет

Шаблон одного символа

Нет

_

Шаблон нескольких символов

*

%

Экранирование

Нет

ESCAPE

Какой из них использовать, зависит от вас, но старайтесь придерживаться одного и того же в запросах для обеспечения согласованности.

Поскольку тип кавычек в запросах между двумя шаблонами довольно похож (" vs '), Elasticsearch SQL всегда требует ключевого слова LIKE для SQL LIKE шаблона.

© 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-index-patterns.html

Spec-Zone.ru

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