Комментарии 6
При запуске Elasticsearch с помощью Docker команда для его запуска выглядит так:
$ docker run --name elasticsearch -d --rm -p 9200:9200 \ --memory="2GB" \ -e discovery.type=single-node -e xpack.security.enabled=false \ -t docker.elastic.co/elasticsearch/elasticsearch:8.11.1
Эта инструкция работать не будет работать для IP-адресов из России, так как docker.elastic.co заблокировало доступ для "дорогих россиян".
Но выйти из положения можно - здесь я использовал рамдомную версию Elasticsearch
Подтягиваем образ с DockerHub
docker pull elasticsearch:7.17.22
Далее создаем контейнер
docker run --name elasticsearch -d --rm -p 9200:9200 --memory="2GB" -e discovery.type=single-node -e xpack.security.enabled=false -t elasticsearch:7.17.22
В Docker Compose в YAML-файле это будет выглядеть так:
elasticsearch:
image: elasticsearch:7.17.22
container_name: elasticsearch
environment:
- discovery.type=single-node
- xpack.security.enabled=false
mem_limit: 2GB
Вообще очень хорошие статьи - всегда хочется немного освежить основы. Причем оригинальный автор Miguel Grinberg - довольно известный ирландский программист. Если встретите его книжку по SQLAlchemy 2.0 - советую ознакомиться, очень хорошо она написана
Спасибо большое за подробный гайд, уверен многие воспользуются им. И отдельное спасибо за рекомендацию по литературе.
Скачать образ elasticsearch 8.14.3 можно :
docker pull cubinez85/elasticsearch_8.14:7a6696851b5f
docker run и все инструкции:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
Или : docker pull cubinez85/elasticsearch_8.14.3:latest
С ELASTICSEARCH_URL в файле .env не так все просто:
по вопросу https://qna.habr.com/q/1361824
в сonfig.py :
es_url = os.getenv('ELASTICSEARCH_URL')
es_ca_certs = os.getenv("ELASTICSEARCH_CA_CERTS")
es_username = os.getenv("ELASTICSEARCH_USERNAME")
es_password = os.getenv("ELASTICSEARCH_PASSWORD")
es = Elasticsearch(es_url, ca_certs=es_ca_certs, basic_auth=(es_username, es_password))
в app/__init__.py пришлось верх часть добавить, тк переменные es* не находит.
и в def create_app добавить : app.elasticsearch = es \
if es else None
Вообщем вышло криво, но работает)
Мега-Учебник Flask Глава 16: Полнотекстовый поиск (издание 2024)