我试图将Django模型连接到本地主机上的Elasticsearch服务器,但当我尝试时
from elasticsearch_dsl.connections import connections我得到错误"ImportError: No模块名为elasticsearch_dsl.connections“。当我在Django shell中使用相同的命令时,它工作得很好。
search.py
from elasticsearch_dsl.connections import connections
from elasticsearch_dsl import DocType, Text, Date, Boolean, Integer, Keyword, fields
from elasticsearch.helpers import bulk
from elasticsearch import Elasticsearch
from .models import HomeGym, Country, Rating
connections.create_connection()
class HomeGymIndex(DocType):
title = Text()
price = fields.FloatField()
tags = Keyword()
city = Text()
country = Text()
rate = Integer()
opusApproved = Boolean()
def bulk_indexing():
HomeGymIndex.init()
es = Elasticsearch()
bulk(client=es, actions=(b.indexing() for b in HomeGym.objects.all().iterator()))这将导致第1行中的ImportError。但是,“没有名为elasticsearch_dsl.connections的模块”相同的导入语句在shell中工作。
我已经在虚拟环境中安装了elasticsearch和elasticsearch-dsl。
这是文件结构
my_website/
elasticsearch/
#elasticsearch files pulled from github
elasticsearch-5.5.2-SNAPSHOT/
#elasticsearch files
bin/
elasticsearch
opus/
manage.py
homegymlistings/
models.py
search.py
#other standard app files
opus/
#standard files for main django branch
my_virtualenv/
bin/
activate为什么我的导入语句只有在位于主页列表应用程序中的search.py文件中调用时才会失败?
发布于 2017-09-12 22:38:55
显然,我不得不在虚拟环境之外安装elasticsearch和elasticsearch-dsl。从那以后错误就消失了。
发布于 2017-09-12 07:16:59
运行这个
pip install elasticsearch_dsl
https://stackoverflow.com/questions/46166092
复制相似问题