Для выполнения выбрал следующий стек технологий:
- PostgreSQL
- Python 3.11.0
- FastApi
- sqlalchemy + psycopg2
- pytest
- poetry - для менеджмента зависимостей, в Dockerfile использую pip
- ElasticSearch 7.17.9
Сборка и запуск:
docker compose up
При запуске, python приложение выгружает из posts.csv
все данные в postgresql
и elasticsearh
- это занимает какое то время, прогресс можно увидеть в логах контейнера
Необходимо написать очень простой поисковик по текстам документов. Данные хранятся в БД по желанию, поисковый индекс в эластике.
Ссылка на тестовый массив данных: [csv]
id
- уникальный для каждого документа;rubrics
- массив рубрик;text
- текст документа;created_date
- дата создания документа.
iD
- id из базы;text
- текст из структуры БД.
- сервис должен принимать на вход произвольный текстовый запрос, искать по тексту документа в индексе и возвращать первые 20 документов со всем полями БД, упорядоченные по дате создания;
- удалять документ из БД и индекса по полю
id
.
- любой python фреймворк кроме Django и DRF;
README
с гайдом по поднятию;docs.json
- документация к сервису в формате openapi.
- функциональные тесты;
- сервис работает в Docker;
- асинхронные вызовы.