列出 table
Manticore Search的表格有单一层次结构。
与其他数据库管理系统不同,Manticore 中没有将表格分组到数据库的概念。然而,为了与 SQL 方言的互操作性,Manticore 接受 SHOW DATABASES
语句,但该语句不返回任何结果。
显示表格
通用语法:
SHOW TABLES [ LIKE pattern ]
SHOW TABLES 语句列出所有当前活动的表格以及它们的类型。现有的表格类型包括 local(本地表格)、distributed(分布式表格)、rt(实时表格)、percolate(过滤器表格)和template(模板表格)。
支持可选的 LIKE 子句,以便按名称过滤表格。
SQL
SHOW TABLES;
SHOW TABLES LIKE 'pro%';
PHP
$client->nodes()->table();
$client->nodes()->table(['body'=>['pattern'=>'pro%']]);
Python
utilsApi.sql('SHOW TABLES')
res = await utilsApi.sql('SHOW TABLES LIKE \'pro%\'');
JavaScript
res = await utilsApi.sql('SHOW TABLES');
utilsApi.sql('SHOW TABLES LIKE \'pro%\'')
DESCRIBE
{DESC | DESCRIBE} table [ LIKE pattern ]
DESCRIBE 语句列出表的列及其关联类型。列包括文档 ID、全文字段和属性。其顺序与 INSERT 和 REPLACE 语句中字段和属性的期望顺序相匹配。列类型包括 field、integer、timestamp、ordinal、bool、float、bigint、string 和 mva。ID 列将被标记为 bigint。示例:
mysql> DESC rt;
+---------+---------+
| Field | Type |
+---------+---------+
| id | bigint |
| title | field |
| content | field |
| gid | integer |
+---------+---------+
4 rows in set (0.00 sec)
还支持可选的 LIKE 子句。有关其语法详细信息,请参阅 SHOW META。
SELECT FROM name.table
通过执行查询SELECT * FROM <table_name>.table
,您还可以查看表模式。此方法的好处是您可以使用WHERE子句进行过滤:
您还可以将 <your_table_name>.table
视为具有整数和字符串属性列的常规 Manticore 表,从而执行许多其他操作。
SHOW CREATE TABLE
SHOW CREATE TABLE name
SHOW CREATE TABLE
语句用于显示用于创建指定表的 CREATE TABLE
语句。
查看表结构
如果您对 percolate 表使用 DESC 语句,它将显示外部表结构,即存储查询的架构。该架构是静态的,并且对于所有本地 percolate 表都相同:
mysql> DESC pq;
+---------+--------+
| Field | Type |
+---------+--------+
| id | bigint |
| query | string |
| tags | string |
| filters | string |
+---------+--------+
4 rows in set (0.00 sec)
如果您想查看预期的文档架构,请使用以下命令:DESC
mysql> DESC pq TABLE;
+-------+--------+
| Field | Type |
+-------+--------+
| id | bigint |
| title | text |
| gid | uint |
+-------+--------+
3 rows in set (0.00 sec)
还支持 desc pq table like …,其工作方式如下:
mysql> desc pq table like '%title%';
+-------+------+----------------+
| Field | Type | Properties |
+-------+------+----------------+
| title | text | indexed stored |
+-------+------+----------------+
1 row in set (0.00 sec)
删除表
删除表格分为两个内部步骤:
- 清空表格(类似于 TRUNCATE 操作)。
- 从表格文件夹中删除所有表格文件。表格使用的所有外部表格文件(如 wordforms、extensions 或 stopwords)也将被删除。请注意,这些外部文件在使用 CREATE TABLE 时被复制到表格文件夹中,因此 CREATE TABLE 中指定的原始文件不会被删除。
仅当服务器在 RT 模式下运行时才能删除表格。可以删除 RT 表格、PQ 表格和分布式表格。
以下是 SQL 中 DROP TABLE 语句的语法:
DROP TABLE [IF EXISTS] 表名
在通过 SQL 删除表格时,添加 IF EXISTS 可以在只有表格存在时删除表格。如果尝试使用 IF EXISTS 选项删除不存在的表格,则不会发生任何操作。
在通过 PHP 删除表格时,您可以添加一个可选的 silent 参数,其效果与 IF EXISTS 相同。
SQL
DROP TABLE IF EXISTS products;
JSON
POST /cli -d "DROP TABLE IF EXISTS products"
PHP
$params = [ 'index' => 'products' ];
$response = $client->indices()->drop($params);
清空数据表
可以使用 TRUNCATE TABLE SQL 语句或 truncate() PHP 客户端函数来清空表格。
以下是 SQL 语句的语法:
TRUNCATE TABLE 表名 [WITH RECONFIGURE]
执行此语句时,它会完全清除 RT 表格。它处理内存中的数据,取消链接所有表格数据文件,并释放关联的二进制日志。
也可以使用 DELETE FROM index WHERE id>0
来清空表格,但不推荐这样做,因为它比 TRUNCATE
操作更慢。
在附加表格之前,此命令的一个可能用途是清空表格。
当使用 RECONFIGURE 选项时,在表格被清空后,指定在配置中的新的分词、形态和其他文本处理设置会生效。如果配置中的模式声明与表格模式不同,那么在清空表格后会应用配置中的新模式。
使用此选项时,清空和重新配置表格成为一个原子操作。