从另一个容器构建elasticsearch索引

rqqzpn5f  于 2021-07-15  发布在  ElasticSearch
关注(0)|答案(0)|浏览(179)

我有一个django项目,它使用django elasticsearch dsl。项目是固定的,因此elasticsearch和web项目放在不同的容器中。现在我的目标是重建和重新填充正在运行的索引

python manage.py search_index --rebuild

为此,我尝试通过以下方式从web服务的容器运行命令:

docker-compose exec web /bin/bash

> python manage.py search_index --rebuild

不出所料,我犯了个错误

Failed to establish a new connection: [Errno 111] Connection refused)

显然是因为python试图使用localhost:9200. 所以问题是,如何告诉管理命令elasticsearch所在的主机?
这是我的docker-compose.yml文件:

version: '2'
services:
  web:
    build: .
    restart: "no"
    command: ["python3", "manage.py", "runserver", "0.0.0.0:8000"]
    env_file: &envfile
      - .env
    environment:
      - DEBUG=True
    ports:
      - "${DJANGO_PORT}:8000"
    networks:
      - deploy_network
    depends_on:
      - elasticsearch
      - db
  elasticsearch:
    image: 'elasticsearch:2.4.6'
    ports:
      - "9200:9200"
      - "9300:9300"
    networks:
      - deploy_network
  db:
    image: "postgres"
    container_name: "postgres"
    restart: "no"
    env_file: *envfile
    ports:
      - "5432:5432"
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
    db_data:

networks:
  deploy_network:
    driver: bridge

更新:
在django项目的设置中,我设置elasticsearch dsl主机:


# settings.py

ELASTICSEARCH_DSL = {
    'default': {
        'hosts': 'localhost:9200'
    }
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题