索引模式
编辑索引模式
编辑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 |
引用类型 |
|
|
包含 |
是 |
是 |
排除 |
是 |
否 |
枚举 |
是 |
否 |
单字符模式 |
否 |
|
多字符模式 |
|
|
转义 |
否 |
|
使用哪种模式取决于您,但为了保持一致性,请尽量在您的查询中使用相同的模式。
由于两种模式之间的查询引用类型非常相似("
vs '
),Elasticsearch SQL 始终需要关键字 LIKE
用于 SQL LIKE
模式。