Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.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

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

[превью] Данная функциональность находится на стадии технического превью и может быть изменена или удалена в будущих версиях. 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

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

Поскольку тип кавычек в обоих шаблонах довольно похож (" против '), 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

Spec-Zone.ru

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