Шаблоны индексов
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 Существует ограничение, что все разрешенные конкретные таблицы должны иметь точно такое же отображение.
[превью] Данная функциональность находится на стадии технического превью и может быть изменена или удалена в будущих версиях. 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 |
Тип кавычек |
|
|
Включение | Да | Да |
Исключение | Да | Нет |
Перечисление | Да | Нет |
Шаблон одного символа | Нет |
|
Шаблон нескольких символов |
|
|
Экранирование | Нет |
|
Какой из них использовать, решать вам, но старайтесь придерживаться одного и того же во всех ваших запросах для обеспечения согласованности.
Поскольку тип кавычек в обоих шаблонах довольно похож (" против '), 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/7.17/sql-index-patterns.html