⌨ CLI-утилита
Для администраторов: CLI-утилита `sku-cli` позволяет управлять сервисом из командной строки — от поиска до управления моделями. Справка встроена: `sku-cli --help` и `sku-cli <команда> --help`.
Общие параметры
# Указать сервер явно
sku-cli -s http://localhost:8081 health
# Или через переменную окружения
export SKU_CLI_SERVER=http://localhost:8082
sku-cli health
# Тихий режим (только JSON) — только флаг `-q`, env не поддерживается
sku-cli -q search "болт" --format json
# Авторизация по API-ключу (если включена) — только флаг `-a`, env не поддерживается
sku-cli -a secret-key search "болт"
# Загрузить config.toml (нужен для csv.default_delimiter и др.)
sku-cli --config /etc/sku-search/config.toml health
Глобальные флаги:
-s / --server, -a / --api-key, -q / --quiet, -c / --config. Переменные окружения поддерживаются только для SKU_CLI_SERVER.
1. Поиск
Команда search принимает позиционный запрос (название) и дополнительные фильтры. UUID длиной 36 символов автоматически интерпретируется как id.
# Обычный поиск
sku-cli search "болт м16" --limit 5
# Поиск по коду, артикулу, штрихкоду
sku-cli search --code CSV-001 --art ART-42
sku-cli search --barcode 4601234567890 --barcode 4609876543210
sku-cli search --id 550e8400-e29b-41d4-a716-446655440000
# Поиск с указанием стратегии (принимается везде, эффект только в PRO)
sku-cli search "шуруповерт" --strategy hybrid --limit 10
# Поиск только по динамическим/extra-полям (PRO only)
sku-cli search "" --field supplier="ООО Ромашка" --dynamic-only
sku-cli search "болт" --field material=сталь --field color=черный
# Поиск с дополнительными 1С-полями
sku-cli search "болт" --type "крепеж" --desc "оцинкованный" --ref "uuid-123"
# Поиск с детальной статистикой
sku-cli search "болт" --show-stats --format json
Стратегии поиска
Флаг --strategy принимается в обеих редакциях, но эффект имеет только в PRO (во Free любое значение сводится к fs_only).
fs_only— только полнотекстовый поиск (default).embedding_only— только векторный (семантический) поиск (PRO).hybrid— полнотекстовый поиск + эмбеддинги, взвешенный скор (PRO).parallel— полнотекстовый поиск и эмбеддинги параллельно, быстрее, но выше нагрузка (PRO).
2. Добавление товаров
Команда add загружает JSON-файл с массивом объектов ItemQuery.
# Прямая загрузка
sku-cli add items.json
# Проверка без записи
sku-cli add items.json --dry-run
# Только полнотекстовый индекс (без эмбеддингов, быстрее)
sku-cli add items.json --fs-only
Пример файла items.json:
[
{
"id": "ID-001",
"name": "Болт М6x20",
"code": "CSV-001",
"art": "ART-001",
"barcode": ["4601234567890"],
"type": "крепеж",
"material": "сталь",
"color": "оцинкованный"
}
]
Поля `id` и `name` обязательны. Поля `code`, `art`, `barcode` — основные идентификаторы. Все остальные поля сохраняются как extra-атрибуты и доступны для поиска через `-F`.
3. Импорт из CSV
Команда import преобразует CSV в батчи /add.
# Базовый импорт (батчи по 500 строк — лимит сервера)
sku-cli import --csv items.csv
# Импорт демо-данных из архива
sku-cli import --csv data/demo-data.csv --batch-size 500
# Сухой запуск
sku-cli import --csv items.csv --dry-run
# Пропуск ошибок и свой размер батча
sku-cli import --csv items.csv --skip-errors --batch-size 500
# Нестандартный разделитель через флаг
sku-cli import --csv items.csv --delimiter ';'
# Разделитель по умолчанию из config.toml
sku-cli --config config.toml import --csv items.csv
# Без эмбеддингов
sku-cli import --csv items.csv --fs-only
CSV должен содержать колонки id и name. Рекомендуемые колонки: code, art, barcode, type. Остальные колонки импортируются как extra-атрибуты. Сервер принимает батчи максимум 500 строк; CLI по умолчанию использует 500.
4. Экспорт
# JSON в stdout
sku-cli export --format json --limit 1000 > backup.json
# CSV в файл
sku-cli export --format csv --limit 10000 --output export.csv
# Постранично
sku-cli export --format json --offset 1000 --limit 1000 > page2.json
5. Удаление
# По одному ID
sku-cli delete "ID-001"
# Несколько ID
sku-cli delete "ID-001" "ID-002" "ID-003"
# Из файла (один ID на строку)
sku-cli delete --file ids.txt
6. Обратная связь (feedback)
Помогает обучению поиска. Регистрирует, какой результат был выбран для запроса.
# Подтвердить релевантность (для обучения синонимов важно передать product_name)
sku-cli feedback --query "болт м10" --matched-id "ID-001" --action accept --product-name "Болт М10х40 оцинкованный"
# Отметить нерелевантность
sku-cli feedback --query "болт м10" --matched-id "ID-002" --action reject
# Запрос без результатов
sku-cli feedback --query "перфоратор бош" --action zero_result
# Дополнительные опции: --product-art, --product-barcode, --matched-by, --position, --session-id, --expected-id
7. Синонимы
# Добавить синонимы
sku-cli synonyms add --word "цинк" --expansions "оцинкованный,zn,zinc"
# Список всех синонимов
sku-cli synonyms list
# Фильтр по слову
sku-cli synonyms list --word "цинк"
# Удалить синоним
sku-cli synonyms remove --word "цинк"
8. Администрирование индекса (PRO only)
# Статистика индекса
sku-cli index-stats
# Оптимизация индекса (мерж сегментов)
sku-cli optimize
# Очистка кэша запросов
sku-cli cache-clear
# Полная очистка индекса (ОСТОРОЖНО!)
sku-cli clear --force
Все команды этого раздела работают только при подключении к PRO-серверу. Во Free-сборке соответствующие HTTP-роуты отсутствуют, и CLI получит
404.
9. Аналитика и обучение (PRO)
# Топ запросов
sku-cli top-queries --limit 20
# Статистика аналитики
sku-cli analytics stats
# Рекомендации по тюнингу
sku-cli analytics tuning
# Сброс накопленной аналитики
sku-cli analytics reset
# Предложения синонимов на основе фидбека
sku-cli learn
10. Управление эмбеддингами (PRO)
# Статистика эмбеддинг-движка
sku-cli embedding stats
# Статус фоновой очереди
sku-cli background
# Переиндексация векторов (синхронно)
sku-cli embedding reindex
# Переиндексация векторов в фоне
sku-cli embedding reindex --background
# Оптимизация векторного индекса
sku-cli embedding optimize
# Очистка кэша модели
sku-cli embedding cache-clear
# Удалить все векторы (ОСТОРОЖНО!)
sku-cli embedding clear
11. Иерархия (PRO)
# Разузлование (дети)
sku-cli hierarchy "ID-001" --direction down --depth 3
# Where-used (родители)
sku-cli hierarchy "ID-001" --direction up --depth 3
# С кросс-кодами и JSON-выводом
sku-cli hierarchy "ID-001" --include-cross --format json
12. Утилиты
# Проверка здоровья сервера
sku-cli health
sku-cli health | jq .db_record_count
# Текущая конфигурация поиска
sku-cli config
# Версия CLI
sku-cli version
# Автодополнение для bash
sku-cli completion -s bash > /etc/bash_completion.d/sku-cli
# Автодополнение для zsh
sku-cli completion -s zsh > ~/.zsh/completions/_sku-cli
# Man-страница
sku-cli man > /tmp/sku-cli.1
Быстрый справочник по переменным окружения
SKU_CLI_SERVER http://localhost:8080
Базовый URL сервиса. Для Free используйте `http://localhost:8081`, для PRO — `http://localhost:8082`.
Поддерживается только
SKU_CLI_SERVER. API-ключ (-a) и тихий режим (-q) задаются только флагами, переменных окружения для них нет.
Пример использования в скриптах:
#!/bin/bash
# Автоматическая синхронизация с 1С
# Выгружаем все товары в CSV
sku-cli export --format csv --limit 50000 --output /tmp/export.csv
# Импортируем новые товары из прайса
sku-cli import --csv /tmp/price.csv --skip-errors
# Оптимизируем индекс
sku-cli optimize
# Получаем статистику
sku-cli health | jq .db_record_count