Back to Manticoresearch

Список таблиц

manual/russian/Listing_tables.md

25.11.012.9 KB
Original Source

Список таблиц

Manticore Search имеет одноуровневую иерархию для таблиц.

В отличие от других СУБД, в Manticore нет концепции группировки таблиц в базы данных. Однако для совместимости с диалектами SQL, Manticore принимает операторы SHOW DATABASES для совместимости с диалектом SQL, но оператор не возвращает никаких результатов.

<!-- example listing -->

SHOW TABLES

Общий синтаксис:

sql
SHOW TABLES [ LIKE pattern ]

Оператор SHOW TABLES выводит список всех активных в данный момент таблиц вместе с их типами. Существующие типы таблиц: local, distributed, rt, percolate и template.

<!-- intro -->
SQL:
<!-- request SQL -->
sql
SHOW TABLES;
<!-- response SQL -->
sql
+----------+-------------+
| Index    | Type        |
+----------+-------------+
| dist     | distributed |
| plain    | local       |
| pq       | percolate   |
| rt       | rt          |
| template | template    |
+----------+-------------+
5 rows in set (0.00 sec)
<!-- request JSON -->
JSON
POST /sql?mode=raw -d "SHOW TABLES"
<!-- response JSON -->
JSON
[
  {
    "columns": [
      {
        "Table": {
          "type": "string"
        }
      },
      {
        "Type": {
          "type": "string"
        }
      }
    ],
    "data": [
      {
        "Table": "dist",
        "Type": "distributed"
      },
      {
        "Table": "plain",
        "Type": "local"
      },
      {
        "Table": "pq",
        "Type": "percolate"
      },{
        "Table": "rt",
        "Type": "rt"
      },{
        "Table": "template",
        "Type": "template"
      }
    ],
    "total": 5,
    "error": "",
    "warning": ""
  }
]

<!-- request PHP -->
php
$client->nodes()->table();
<!-- response PHP -->
php
Array
(
    [dist1] => distributed
    [rt] => rt
    [products] => rt
)

<!-- intro -->
Python:
<!-- request Python -->
python
utilsApi.sql('SHOW TABLES')
<!-- response Python -->
python
{u'columns': [{u'Index': {u'type': u'string'}},
              {u'Type': {u'type': u'string'}}],
 u'data': [{u'Index': u'dist1', u'Type': u'distributed'},
           {u'Index': u'rt', u'Type': u'rt'},
           {u'Index': u'products', u'Type': u'rt'}],
 u'error': u'',
 u'total': 0,
 u'warning': u''}
<!-- intro -->
Python-asyncio:
<!-- request Python-asyncio -->
python
await utilsApi.sql('SHOW TABLES')
<!-- response Python-asyncio -->
python
{u'columns': [{u'Index': {u'type': u'string'}},
              {u'Type': {u'type': u'string'}}],
 u'data': [{u'Index': u'dist1', u'Type': u'distributed'},
           {u'Index': u'rt', u'Type': u'rt'},
           {u'Index': u'products', u'Type': u'rt'}],
 u'error': u'',
 u'total': 0,
 u'warning': u''}
<!-- intro -->
Javascript:
<!-- request javascript -->
javascript
res = await utilsApi.sql('SHOW TABLES');
<!-- response javascript -->
javascript
{"columns":[{"Index":{"type":"string"}},{"Type":{"type":"string"}}],"data":[{"Index":"products","Type":"rt"}],"total":0,"error":"","warning":""}
<!-- intro -->
java:
<!-- request Java -->
java
utilsApi.sql("SHOW TABLES", true)
<!-- response Java -->
java
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error=, warning=}
<!-- intro -->
C#:
<!-- request C# -->
clike
utilsApi.Sql("SHOW TABLES", true)
<!-- response C# -->
C#
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error="", warning=""}
<!-- intro -->
Rust:
<!-- request Rust -->
rust
utils_api.sql("SHOW TABLES", Some(true)).await
<!-- response Rust -->
Rust
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error="", warning=""}
<!-- end --> <!-- data for the following examples: CREATE TABLE products type='distributed' local='products' agent='127.0.0.1:9312:products' --> <!-- example Example_2 -->

Поддерживается необязательное предложение LIKE для фильтрации таблиц по имени.

<!-- intro -->
SQL:
<!-- request SQL -->
sql
SHOW TABLES LIKE 'pro%';
<!-- response SQL -->
sql
+----------+-------------+
| Index    | Type        |
+----------+-------------+
| products | distributed |
+----------+-------------+
1 row in set (0.00 sec)
<!-- request JSON -->
sql
POST /sql?mode=raw -d "SHOW TABLES LIKE 'pro%';"
<!-- response JSON -->
JSON
[
  {
    "columns": [
      {
        "Table": {
          "type": "string"
        }
      },
      {
        "Type": {
          "type": "string"
        }
      }
    ],
    "data": [
      {
        "Table": "products",
        "Type": "distributed"
      }
    ],
    "total": 1,
    "error": "",
    "warning": ""
  }
]
<!-- request PHP -->
php
$client->nodes()->table(['body'=>['pattern'=>'pro%']]);
<!-- response PHP -->
php
Array
(
    [products] => distributed
)

<!-- intro -->
Python:
<!-- request Python -->
python
utilsApi.sql('SHOW TABLES LIKE \'pro%\'');
<!-- response Python -->
python
{u'columns': [{u'Index': {u'type': u'string'}},
              {u'Type': {u'type': u'string'}}],
 u'data': [{u'Index': u'products', u'Type': u'rt'}],
 u'error': u'',
 u'total': 0,
 u'warning': u''}
<!-- intro -->
Python-asyncio:
<!-- request Python-asyncio -->
python
await utilsApi.sql('SHOW TABLES LIKE \'pro%\'');
<!-- response Python-asyncio -->
python
{u'columns': [{u'Index': {u'type': u'string'}},
              {u'Type': {u'type': u'string'}}],
 u'data': [{u'Index': u'products', u'Type': u'rt'}],
 u'error': u'',
 u'total': 0,
 u'warning': u''}
<!-- intro -->
Javascript:
<!-- request javascript -->
javascript
utilsApi.sql('SHOW TABLES LIKE \'pro%\'')
<!-- response javascript -->
javascript
{"columns":[{"Index":{"type":"string"}},{"Type":{"type":"string"}}],"data":[{"Index":"products","Type":"rt"}],"total":0,"error":"","warning":""}
<!-- intro -->
java:
<!-- request Java -->
java
utilsApi.sql("SHOW TABLES LIKE 'pro%'", true)
<!-- response Java -->
java
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error=, warning=}
<!-- intro -->
C#:
<!-- request C# -->
clike
utilsApi.Sql("SHOW TABLES LIKE 'pro%'", true)
<!-- response C# -->
clike
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error="", warning=""}
<!-- intro -->
Rust:
<!-- request Rust -->
rust
utils_api.sql("SHOW TABLES LIKE 'pro%'", Some(true)).await
<!-- response Rust -->
rust
{columns=[{Index={type=string}}, {Type={type=string}}], data=[{Index=products, Type=rt}], total=0, error="", warning=""}
<!-- end -->

DESCRIBE

sql
{DESC | DESCRIBE} table_name [ LIKE pattern ]

Оператор DESCRIBE выводит список столбцов таблицы и связанных с ними типов. Столбцы включают идентификатор документа, полнотекстовые поля и атрибуты. Порядок соответствует порядку, в котором поля и атрибуты ожидаются операторами INSERT и REPLACE. Типы столбцов включают field, integer, timestamp, ordinal, bool, float, bigint, string и mva. Столбец ID будет иметь тип bigint. Пример:

sql
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

<!-- data for the following examples: DROP TABLE IF EXISTS tbl; CREATE TABLE tbl(title text indexed stored) charset_table='non_cont,cont' morphology='icu_chinese'; --> <!-- example name_table -->

Вы также можете просмотреть схему таблицы, выполнив запрос select * from <table_name>.@table. Преимущество этого метода в том, что вы можете использовать предложение WHERE для фильтрации:

<!-- request SQL -->
sql
select * from tbl.@table where type='text';
<!-- response SQL -->
sql
+------+-------+------+----------------+
| id   | field | type | properties     |
+------+-------+------+----------------+
|    2 | title | text | indexed stored |
+------+-------+------+----------------+
1 row in set (0.00 sec)
<!-- request JSON -->
sql
POST /sql?mode=raw -d "select * from tbl.@table where type='text';"
<!-- response JSON -->
JSON
[{
"columns":[{"id":{"type":"long long"}},{"field":{"type":"string"}},{"type":{"type":"string"}},{"properties":{"type":"string"}}],
"data":[
{"id":2,"field":"title","type":"text","properties":"indexed stored"}
],
"total":1,
"error":"",
"warning":""
}]
<!-- end --> <!-- example name_table2 -->

Вы также можете выполнять множество других действий с <your_table_name>.@table, рассматривая его как обычную таблицу Manticore со столбцами, состоящими из целочисленных и строковых атрибутов.

<!-- request SQL -->
sql
select field from tbl.@table;
select field, properties from tbl.@table where type in ('text', 'uint');
select * from tbl.@table where properties any ('stored');
<!-- end -->

SHOW CREATE TABLE

<!-- example show_create -->
sql
SHOW CREATE TABLE table_name [ OPTION output_words = 'list' | 'file' ]

Выводит оператор CREATE TABLE, использованный для создания указанной таблицы.

Опция output_words позволяет управлять отображением настроек внешних файлов (таких как stopwords, exceptions, wordforms, hitless_words):

  • 'list' (по умолчанию): Отображает содержимое файлов в виде встроенных списков с использованием опций *_list (например, stopwords_list='word1; word2').
  • 'file': Отображает пути к файлам с использованием исходных опций (например, stopwords='/path/to/file').
<!-- intro -->
SQL:
<!-- request SQL -->
sql
SHOW CREATE TABLE tbl\G
<!-- response SQL -->
sql
       Table: tbl
Create Table: CREATE TABLE tbl (
f text indexed stored
) charset_table='non_cont,cont' morphology='icu_chinese'
1 row in set (0.00 sec)
<!-- intro -->
JSON:
<!-- request JSON -->
JSON
POST /sql?mode=raw -d "SHOW CREATE TABLE tbl"
<!-- response JSON -->
JSON
[{
"columns":[{"Table":{"type":"string"}},{"Create Table":{"type":"string"}}],
"data":[
{"Table":"tbl","Create Table":"CREATE TABLE tbl (\nf text)"}
],
"total":1,
"error":"",
"warning":""
}]
<!-- end -->

Схемы перколяционных таблиц

Если вы используете оператор DESC для перколяционной таблицы, он отобразит внешнюю схему таблицы, которая является схемой хранимых запросов. Эта схема статична и одинакова для всех локальных перколяционных таблиц:

sql
mysql> DESC pq;
+---------+--------+
| Field   | Type   |
+---------+--------+
| id      | bigint |
| query   | string |
| tags    | string |
| filters | string |
+---------+--------+
4 rows in set (0.00 sec)

Если вы хотите просмотреть ожидаемую схему документа, используйте следующую команду: DESC <pq table name> table:

sql
mysql> DESC pq TABLE;
+-------+--------+
| Field | Type   |
+-------+--------+
| id    | bigint |
| title | text   |
| gid   | uint   |
+-------+--------+
3 rows in set (0.00 sec)

Также поддерживается desc pq table like ..., и он работает следующим образом:

sql
mysql> desc pq table like '%title%';
+-------+------+----------------+
| Field | Type | Properties     |
+-------+------+----------------+
| title | text | indexed stored |
+-------+------+----------------+
1 row in set (0.00 sec)