列出 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。示例:

  1. mysql> DESC rt;
  2. +---------+---------+
  3. | Field | Type |
  4. +---------+---------+
  5. | id | bigint |
  6. | title | field |
  7. | content | field |
  8. | gid | integer |
  9. +---------+---------+
  10. 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 表都相同:

  1. mysql> DESC pq;
  2. +---------+--------+
  3. | Field | Type |
  4. +---------+--------+
  5. | id | bigint |
  6. | query | string |
  7. | tags | string |
  8. | filters | string |
  9. +---------+--------+
  10. 4 rows in set (0.00 sec)

如果您想查看预期的文档架构,请使用以下命令:DESC TABLE:

  1. mysql> DESC pq TABLE;
  2. +-------+--------+
  3. | Field | Type |
  4. +-------+--------+
  5. | id | bigint |
  6. | title | text |
  7. | gid | uint |
  8. +-------+--------+
  9. 3 rows in set (0.00 sec)

还支持 desc pq table like …,其工作方式如下:

  1. mysql> desc pq table like '%title%';
  2. +-------+------+----------------+
  3. | Field | Type | Properties |
  4. +-------+------+----------------+
  5. | title | text | indexed stored |
  6. +-------+------+----------------+
  7. 1 row in set (0.00 sec)

删除表

删除表格分为两个内部步骤:

  1. 清空表格(类似于 TRUNCATE 操作)。
  2. 从表格文件夹中删除所有表格文件。表格使用的所有外部表格文件(如 wordforms、extensions 或 stopwords)也将被删除。请注意,这些外部文件在使用 CREATE TABLE 时被复制到表格文件夹中,因此 CREATE TABLE 中指定的原始文件不会被删除。

仅当服务器在 RT 模式下运行时才能删除表格。可以删除 RT 表格、PQ 表格和分布式表格。

以下是 SQL 中 DROP TABLE 语句的语法:

  1. 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

  1. $params = [ 'index' => 'products' ];
  2. $response = $client->indices()->drop($params);

清空数据表

可以使用 TRUNCATE TABLE SQL 语句或 truncate() PHP 客户端函数来清空表格。

以下是 SQL 语句的语法:

  1. TRUNCATE TABLE 表名 [WITH RECONFIGURE]

执行此语句时,它会完全清除 RT 表格。它处理内存中的数据,取消链接所有表格数据文件,并释放关联的二进制日志。

也可以使用 DELETE FROM index WHERE id>0 来清空表格,但不推荐这样做,因为它比 TRUNCATE 操作更慢。

在附加表格之前,此命令的一个可能用途是清空表格。

当使用 RECONFIGURE 选项时,在表格被清空后,指定在配置中的新的分词、形态和其他文本处理设置会生效。如果配置中的模式声明与表格模式不同,那么在清空表格后会应用配置中的新模式。

使用此选项时,清空和重新配置表格成为一个原子操作。