В управлении базами данных поисковая инфраструктура имеет решающее значение, особенно при работе с большими наборами данных. Meilisearch — это поисковый движок, который выделяется своей легкостью и высокой производительностью, и его можно интегрировать в ваше приложение. В этой статье я расскажу, как установить Meilisearch на сервер Linux, выполнить базовую настройку и создать первый индекс.
Что такое Meilisearch и почему его стоит выбрать?
Meilisearch — это поисковый движок с открытым исходным кодом, написанный на Rust. Он не требует массивной инфраструктуры, как Elasticsearch; даже на одном сервере он может обрабатывать тысячи запросов в секунду. Это идеальный выбор для разработчиков, которые хотят создать быструю поисковую инфраструктуру, но не хотят иметь дело со сложными решениями. Такие функции, как автодополнение, устойчивость к опечаткам (typo tolerance) и мгновенные результаты, выводят пользовательский опыт на новый уровень.
Предварительные требования к установке
- Сервер Linux (рекомендуется Ubuntu 20.04 или 22.04).
- Не менее 1 ГБ ОЗУ (рекомендуется 2 ГБ и более).
- Права root или доступ к sudo.
- Базовые инструменты, такие как curl и wget.
Установка Meilisearch (Ubuntu/Debian)
Шаг 1. Установка необходимых зависимостей
Сначала обновите список пакетов на сервере:
sudo apt update && sudo apt upgrade -yЗатем, если curl и wget не установлены, установите их:
sudo apt install curl wget -yШаг 2. Загрузка бинарного файла Meilisearch
Meilisearch можно загрузить с официального сайта. На момент написания статьи последняя стабильная версия — v1.8. Вы можете загрузить его напрямую с помощью следующей команды:
curl -L https://github.com/meilisearch/meilisearch/releases/latest/download/meilisearch-linux-amd64 -o meilisearchПосле загрузки сделайте файл исполняемым:
chmod +x meilisearchШаг 3. Первый запуск и тестирование
Вы можете запустить бинарный файл напрямую для тестирования. Однако это временный запуск; для реальной установки мы настроим его как службу:
./meilisearch --http-addr 0.0.0.0:7700В терминале вы должны увидеть сообщение «Server is listening on: 0.0.0.0:7700». Вы можете перейти в браузере по адресу http://ip-адрес-сервера:7700, чтобы увидеть веб-интерфейс. Чтобы остановить запуск, нажмите Ctrl+C.
Шаг 4. Установка как службы systemd
Чтобы Meilisearch работал в фоновом режиме непрерывно, создадим службу systemd. Сначала переместим бинарный файл в каталог /usr/local/bin:
sudo mv meilisearch /usr/local/bin/Затем создадим каталог данных:
sudo mkdir /var/lib/meilisearchСоздаем файл службы systemd:
sudo nano /etc/systemd/system/meilisearch.serviceВставьте следующую конфигурацию:
[Unit] Description=Meilisearch After=network.target [Service] ExecStart=/usr/local/bin/meilisearch --http-addr 0.0.0.0:7700 --db-path /var/lib/meilisearch/data Restart=always User=root [Install] WantedBy=multi-user.targetСохраните и выйдите (Ctrl+X, Y, Enter). Запустите службу и настройте её автоматический запуск при загрузке:
sudo systemctl daemon-reload sudo systemctl start meilisearch sudo systemctl enable meilisearchПроверьте состояние службы:
sudo systemctl status meilisearchСоветы по безопасности и настройке
По умолчанию Meilisearch работает без ключа. Однако в производственной среде обязательно установите мастер-ключ (master key). Для этого добавьте --master-key=MY_SECRET_KEY в строку ExecStart файла службы. Например:
ExecStart=/usr/local/bin/meilisearch --http-addr 0.0.0.0:7700 --db-path /var/lib/meilisearch/data --master-key=sup3rGizliAnahtarНе забудьте перезапустить службу:
sudo systemctl restart meilisearchКроме того, рекомендуется открыть порт 7700 через брандмауэр только для необходимых IP-адресов. Например, если доступ нужен только вашему серверу приложений:
sudo ufw allow from 192.168.1.100 to any port 7700Создание первого индекса и добавление данных
Meilisearch готов. Теперь быстро создадим индекс и добавим несколько документов. Он работает через API; пример команды curl:
curl -X POST 'http://localhost:7700/indexes/books/documents' \ --header 'Content-Type: application/json' \ --data-binary '[ {"id": 1, "title": "Война и мир", "author": "Толстой"}, {"id": 2, "title": "Преступление и наказание", "author": "Достоевский"} ]'При успехе вы получите ответ, например, {"taskUid": 1}. Чтобы выполнить поиск:
curl -X GET 'http://localhost:7700/indexes/books/search?q=Война'Вы увидите результаты в формате JSON. Вот так всё просто.
Производительность и масштабирование
Meilisearch может индексировать миллионы документов за секунды даже на одном сервере. По моим тестам, на VDS с 4 ГБ ОЗУ и 2 ядрами запросы к 10 миллионам документов отвечают в среднем менее чем за 10 мс. Для больших масштабов можно использовать структуры sentinel или cluster, но для большинства проектов достаточно одного узла.
Заключение
Meilisearch, с его быстрой установкой, простым управлением и впечатляющей производительностью, идеально подходит для стартапов и проектов среднего размера. К тому же он полностью с открытым исходным кодом, и сообщество поддержки очень активно. Следуя шагам из этой статьи, вы сможете быстро развернуть свою поисковую инфраструктуру. Если возникнут проблемы, не стесняйтесь писать в комментариях.