allyotov / aps_text_doc_search

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Сервис, реализующий поиск по текстовым документам

Модель данных

Пост

  • id - уникальный для каждого поста;
  • rubrics - массив рубрик;
  • text - текст поста;
  • created_date - дата создания поста.

Эндпойнты

  1. Поиск по тексту поста, возвращает 20 найденных документов, упорядоченных по дате создания, в текстах которых указанный в параметре текст встречается как подстрока:
http://127.0.0.1:5000/api/v1/text_docs/?search=информация&order=asc

Параметр order управляет тем, будет ли упорядочиваться результат по убыванию (desc) или по возрастанию (asc)

  1. Удаление поста по его id:
http://127.0.0.1:5000/api/v1/text_docs/1104

Порядок развёртывания сервиса

Для работы с сервисом в режиме отладки вам понадобится установить менеджер пакетов poetry. Таргеты, предназначенные для отладки вы можете посмотреть в Makefile.

Для установки контейнеров сервиса запустите:

make install

После этого нужно немного подождать, чтобы успел подняться контейнер c Elasticsearch. Для проверки Elasticsearch можно запустить ping и посмтреть health:

make es.check
make es.logs

Когда Elasticsearch будет готов, можно создать индекс и Б.Д. командой:

make db.create

Далее заполнить её из post.csv, который нужно разместить в директории /backend_data:

make db.fill

Запустить бэкенд можно так:

make app.run

Проверить логи бэкенда:

app.logs

Остановить контейнеры:

make down

Удалить контейнеры:

make remove.images

Удалить директорию с данными Б.Д. и индекса:

make clean

Возможная проблема в работе elasticsearch - нехватка памяти. Способ устранения

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

Надо в системе, в которой установлен docker (не в контейнере) увеличить память. Сначала проверим:

more /proc/sys/vm/max_map_count

На экран выводится значение 65530, значит все верно - памяти не достаточно. Для убунту выполняем:

sudo sh -c 'echo "vm.max_map_count = 262144" >> /etc/sysctl.conf'
sudo sysctl -p

About

License:MIT License


Languages

Language:Python 81.5%Language:Makefile 13.5%Language:Dockerfile 3.1%Language:Shell 1.9%