Typesense – поисковый движок с открытым исходным кодом, предназначенный для полнотекстового поиска, автодополнения и работы с индексами в реальном времени. Он ориентирован на простую настройку, высокую скорость обработки запросов и минимальные требования к администрированию. Typesense часто используют в интернет-магазинах, документации, блогах и внутренних корпоративных сервисах.
В статье разберём, как установить Typesense на VPS на примере виртуального выделенного сервера под управлением CentOS Stream 10 и Rocky Linux 9.
Как установить Typesense на CentOS Stream и Rocky Linux
Разработчики Typesense распространяют готовые RPM-пакеты для RHEL-совместимых дистрибутивов, включая CentOS Stream и Rocky Linux.
Загрузка и установка Typesense на CentOS Stream и Rocky Linux
Для загрузки RPM-пакета потребуется утилита wget, предназначенная для получения файлов из сети. Чтобы установить утилиту, выполните команду:
$ sudo dnf install wget
При помощи утилиты wget загрузите RPM-пакет актуальной версии, которой на момент написания мануала является версия 30.2:
$ wget https://dl.typesense.org/releases/30.2/typesense-server-30.2-1.x86_64.rpm
По окончании загрузки запустите инсталляцию пакета при помощи менеджера dnf:
$ sudo dnf install typesense-server-30.2-1.x86_64.rpm
В результате в системе появятся служба typesense-server, конфигурация Typesense, а также каталоги для хранения данных и логов:
/etc/typesense/typesense-server.ini– файл конфигурации;/var/lib/typesense/– каталог данных;/var/log/typesense/– каталог журналов событий.
Первоначальная настройка и проверка работоспособности Typesense
Во время установки Typesense генерирует административный API-ключ. Его можно увидеть в конфигурационном файле. Он указан в качестве значения параметра api-key. Если есть необходимость, ключ можно заменить на собственный.
После установки служба typesense-server должна быть запущена и добавлена в автозагрузку. Убедиться в этом можно, проверив её текущий статус:
$ systemctl status typesense-server.service

По умолчанию Typesense использует порт 8108. Проверить доступность API можно при помощи команды:
$ curl http://localhost:8108/health
В ответ сервер должен вернуть строку {"ok":true}.

Чтобы проверить работу Typesense из браузера, необходимо на сервере открыть используемый движком порт:
$ sudo firewall-cmd --permanent --add-port=8108/tcp
После внесения изменений в настройки брандмауэра перезапустите его конфигурацию:
$ sudo firewall-cmd --reload
После чего откройте браузер и перейдите по ссылке http://your-domain-name.ru:8108/health, в которой замените your-domain-name.ru на IP-адрес вашего сервера или доменное имя, привязанное к нему.

Для создания тестовой коллекции документов запустите команду:
$ curl -X POST "http://localhost:8108/collections" \
-H "X-TYPESENSE-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "books",
"fields": [
{"name": "title", "type": "string"},
{"name": "author", "type": "string"}
]
}'
В команде замените YOUR_API_KEY на административный API-ключ, указанный в файле конфигурации.
Чтобы добавить тестовый документ, выполните команду:
$ curl -X POST "http://localhost:8108/collections/books/documents" \
-H "X-TYPESENSE-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Linux Administration",
"author": "John Smith"
}'
Для выполнения поиска по данным и вывода его результатов в читаемом виде выполните следующую команду, заменив YOUR_API_KEY на административный API-ключ:
$ curl "http://localhost:8108/collections/books/documents/search?q=linux&query_by=title" -H "X-TYPESENSE-API-KEY: YOUR_API_KEY" | jq '{found, documents: [.hits[].document]}'
Параметр found показывает количество найденных документов. В нашем примере Typesense обнаружил один документ, содержащий слово linux в поле title.

