正在加载

索引模式

Elastic Stack Serverless

Elasticsearch SQL 支持两种类型的模式来匹配多个索引或表

只要将 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
注意

存在一个限制,即所有解析的具体表都具有完全相同的映射。

[预览] 要运行 跨集群搜索,请使用 <remote_cluster>:<target> 语法指定集群名称,其中 <remote_cluster> 映射到 SQL 目录(集群),<target> 映射到表(索引或数据流)。 <remote_cluster> 支持通配符 (*),并且 <target> 可以是索引模式。

例如

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

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

常见的 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 模式。

© . All rights reserved.