8.7.8. Таблицы Manticore Search
Важные моменты:
- Тип создаваемых таблиц всегда Real-time (RT).
- В таблицах RT данные сразу попадают в индекс. Для добавления новых данных используйте запрос
INSERT INTO, для изменения существующих —REPLACE INTO.
Данные для поиска хранятся в виде таблиц. Каждая строка таблицы содержит поле с уникальным ID и дополнительные поля, по которым выполняется поиск. Все созданные таблицы выводятся в разделе «Manticore Search» на вкладке «Таблицы»:
Создание
- Нажмите «Создать таблицу».
- Укажите название таблицы, поля, настройки морфологии, индекса, токенизатора и сохраните изменения:

- «Поля» — настройки полей (название, тип, модель хранения).
- Поле «id» является первичным ключом, поэтому модель хранения для него выбирать не нужно (при сохранении она будет очищена).
- Модель хранения «indexed» создаёт полнотекстовый индекс с возможностью полнотекстового поиска, но оригинальный текст при этом не сохраняется. Для сохранения исходного документа с возможностью полнотекстового поиска используйте «indexed stored».
- Модель хранения «stored» (другое название — «row-wise») используется по умолчанию. Если явно указать «columnar», то вместо «stored» будет использоваться «columnar». Сравнение моделей хранения см. в официальной документации.
- «Морфология» — настройки index_exact_words и морфологии для разных языков (lemmatize, stem), подключение словарей.
- «Индекс» — настройки html_strip, expand_keywords, min_word_len, min_prefix_len, min_infix_len.
- «Токенизатор» — настройки charset_table, ignore_chars, Blend chars, Blend mode.
Управление
Просмотр. Выполнение запроса на просмотр содержимого таблицы.
Переименовать (только для таблиц RT). Переименование таблицы.
Autocomplete. Проверка работы автодополнения.
Keywords. Проверка работы токенизатора.
Структура (только для таблиц RT). Настройки полей, морфологии, подключение словарей, настройки индекса и токенизатора (как при создании).
Клонировать (только для таблиц RT). Создание копии таблицы.
Импорт. Настройка запроса на импорт данных в таблицу (выбор источника данных, SQL-запрос), расписания запуска и кнопка принудительного запуска.
Info. Просмотр статуса таблицы. На вкладках «Состояние» и «Статистика» выводятся данные из результата запроса SHOW TABLE table STATUS, на вкладке «Структура» (только для таблиц RT) выводится запрос на создание таблицы с такой же структурой.
Очистить (только для таблиц RT). Очистка содержимого таблицы (подтверждается кнопкой).
Удалить (только для таблиц RT). Удаление таблицы (подтверждается кнопкой).
Дополнительно выводится:
- Количество проиндексированных документов (строк в таблице).
- Размер индекса на диске.
- Объём занимаемой оперативной памяти.
Внизу выводится список полей и текущие настройки таблицы.
Работа с таблицами
Подключение
Примечания:
- Рекомендуем использовать интерфейс MySQL — у него привычный синтаксис и он обладает большими возможностями за счёт поддержки сессий (например, можно установить флаг
SET profiling = 1, затем в том же соединении выполнить запрос и получить статистику). - Если для инстанса включены ограничения доступа, для подключения с хостинга в разрешённые должен быть добавлен прямой IPv4 хостинг-аккаунта.
Подключение из консоли через MySQL (в команде используйте свои данные, порт указывается без пробела после -P):
mysql -h example.manticore.tools -P10000
Подключение и отправка SQL-запроса из консоли через cURL:
curl https://example.manticore.tools/cli -d "SHOW TABLES"
Запросы
Создание таблицы (типа данных будут подбираться автоматически):
CREATE TABLE TABLE_NAME;
Создание таблицы с ручным указанием структуры (рекомендуется, т.к. в автоматическом режиме типы данных не всегда могут подбираться корректно):
CREATE TABLE TABLE_NAME (name text, in_stock INT, price FLOAT, properties json);
Копирование структуры таблицы:
CREATE TABLE table_name2 LIKE table_name1;
Просмотр списка таблиц:
SHOW TABLES;
Просмотр структуры таблицы:
DESC TABLE_NAME;
Вставка данных в таблицу (если таблица не существует, она будет создана автоматически):
INSERT INTO TABLE_NAME (name, in_stock, price, properties) VALUES ('nice bag', 177, 1.15, '{"color": "red"}');
Выборка данных из таблицы:
SELECT * FROM TABLE_NAME;
Изменение данных в таблице:
REPLACE INTO TABLE_NAME SET name='other nice bag', in_stock=123 WHERE id = id_number;
Удаление таблицы:
DROP TABLE IF EXISTS TABLE_NAME;