索引模式
编辑索引模式
编辑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
。