索引模式
编辑索引模式编辑
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 将努力修复任何问题,但技术预览版中的功能不受官方 GA 功能支持 SLA 的约束。 要运行 跨集群搜索,请使用 <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 始终 要求对 SQL LIKE
模式使用关键字 LIKE
。