⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

Creating Tables in Manticore Search: The Complete Guide

Когда-нибудь задавались вопросом, как создавать таблицы в Manticore Search? Независимо от того, только ли вы начинаете или хотите оптимизировать свою настройку, мы вам поможем. В этом руководстве мы рассмотрим различные подходы к созданию таблиц — от самого простого метода авто‑схемы до более продвинутых вариантов конфигурации.

Магия авто‑схемы: нулевая конфигурация

А что если мы скажем вам, что вам даже не нужно явно создавать таблицу? Благодаря функции авто‑схемы в Manticore, вы можете сразу начинать вставлять данные. Давайте посмотрим эту магию в действии:

drop table if exists test;
Query OK, 0 rows affected (0.00 sec)

insert into test (name, in_stock, price, properties) values('nice bag', 117, 1.15, '{"color": "red"}');
Query OK, 1 row affected (0.01 sec)

Вот и всё! Таблица создаётся автоматически. Давайте проверим её структуру:

desc test;
+------------+--------+----------------+
| Field      | Type   | Properties     |
+------------+--------+----------------+
| id         | bigint |                |
| name       | text   | indexed stored |
| in_stock   | uint   |                |
| price      | float  |                |
| properties | json   |                |
+------------+--------+----------------+
5 rows in set (0.01 sec)

И наши данные уже находятся там:

select * from test;
+---------------------+----------+----------+----------+-----------------+
| id                  | name     | in_stock | price    | properties      |
+---------------------+----------+----------+----------+-----------------+
| 1516257118578016257 | nice bag |      117 | 1.150000 | {"color":"red"} |
+---------------------+----------+----------+----------+-----------------+
1 row in set (0.00 sec)
--- 1 out of 1 results in 1ms ---

Совет: Хотя авто‑схема удобна, у неё есть свои компромиссы. Система определяет типы полей на основе вашего первого документа, что не всегда соответствует вашим намерениям. Например, вы можете захотеть строковый атрибут, но он может быть создан как полнотекстовое поле вместо этого.

Ручное создание таблиц: берём контроль в свои руки

Когда вам нужен точный контроль над структурой таблицы, ручное создание — лучший путь. Вот как это сделать с помощью SQL:

drop table if exists test;
Query OK, 0 rows affected (0.01 sec)

create table test(name text, in_stock int, price float, properties json);
Query OK, 0 rows affected (0.00 sec)

HTTP‑подход: REST API для создания таблиц

Предпочитаете работать через HTTP? Manticore вам поможет! Вы можете использовать эндпоинт /cli для управления таблицами:

curl "0:9308/cli" -d 'drop table if exists test'
Query OK, 0 rows affected (0.002 sec)

curl "0:9308/cli" -d 'create table test(name text, in_stock int, price float, properties json)'
Query OK, 0 rows affected (0.011 sec)

curl "0:9308/cli" -d 'desc test'
+------------+--------+----------------+
| Field      | Type   | Properties     |
+------------+--------+----------------+
| id         | bigint |                |
| name       | text   | indexed stored |
| in_stock   | uint   |                |
| price      | float  |                |
| properties | json   |                |
+------------+--------+----------------+
5 rows in set (0.001 sec)

Клонирование таблиц: работайте умнее, а не усерднее

Нужна таблица с той же структурой, что и у существующей? Оператор CREATE TABLE LIKE вам в помощь:

drop table if exists test2;
Query OK, 0 rows affected (0.00 sec)

create table test2 like test;
Query OK, 0 rows affected (0.01 sec)

desc test2;
+------------+--------+----------------+
| Field      | Type   | Properties     |
+------------+--------+----------------+
| id         | bigint |                |
| name       | text   | indexed stored |
| in_stock   | uint   |                |
| price      | float  |                |
| properties | json   |                |
+------------+--------+----------------+
5 rows in set (0.00 sec)

Продвинутая конфигурация: использование файлов конфигурации

Хотя режим реального времени является рекомендуемым по умолчанию, иногда требуется больший контроль или предварительное объявление параметров. Здесь на помощь приходят файлы конфигурации. Ниже пример конфигурации, демонстрирующей как таблицы реального времени, так и обычные таблицы:

searchd {
    listen = 9315:mysql41
    log = searchd.log
    pid_file = searchd.pid
    binlog_path =
}

source src {
    type = csvpipe
    csvpipe_command = echo "1,abc" && echo "3,def"
    csvpipe_field = F
}

table plain {
    type = plain
    source = src
    path = /tmp/plain
}

table goods {
    type = rt
    path = /tmp/rt
    rt_field = title
    rt_attr_uint = quantity
    rt_attr_float = price
}

После запуска Manticore с этой конфигурацией:

mysql -P9315 -h0 -e "show tables"
+-------+------+
| Table | Type |
+-------+------+
| goods | rt   |
+-------+------+

Чтобы создать и заполнить обычную таблицу, нам нужно запустить индексатор:

indexer -c manticore_test.conf --all --rotate

После перезагрузки таблиц:

mysql -P9315 -h0 -e "show tables"
+-------+-------+
| Table | Type  |
+-------+-------+
| goods | rt    |
| plain | local |
+-------+-------+

mysql -P9315 -v -h0 -e "select * from goods; select * from plain"
--------------
select * from goods
--------------

--------------
select * from plain
--------------

+------+------+
| id   | f    |
+------+------+
|    1 | abc  |
|    3 | def  |
+------+------+

Подведение итогов

Мы рассмотрели несколько способов создания таблиц в Manticore Search:

  • Авто‑схема для быстрого старта
  • Ручное создание для точного контроля
  • HTTP API для управления через REST
  • Клонирование таблиц для быстрой дубликации
  • Файлы конфигурации для сложных сценариев

Каждый подход имеет свои сценарии применения, и выбор правильного зависит от ваших конкретных потребностей. Режим реального времени (по умолчанию) обеспечивает простоту и гибкость для большинства случаев, тогда как подход с файлом конфигурации предоставляет больший контроль и упрощает развертывание на серверах.

Вызов для читателя: Попробуйте создать таблицу каждым из методов и посмотрите, какой из них лучше подходит вашему рабочему процессу!

Предпочитаете смотреть, а не читать? Ознакомьтесь с нашим подробным видеоруководством по этой теме:

Установить Manticore Search

Установить Manticore Search