我试图建立一个简单的django弹片搜索,可以搜索汽车。但是当我试图反驳索引时,它给了我上面的错误。我正在关注此文档->quickstart elasticsearch…下面给出了完整的回溯->
elasticsearch.exceptions.ConnectionError: ConnectionError(<urllib3.connection.HTTPConnection object at 0x7f09b9f0a7c0>: Failed to establish a new connection: [Errno 111] Connection refused) caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7f09b9f0a7c0>: Failed to establish a new connection: [Errno 111] Connection refused)
my models.py是一个简单的汽车模型,有名称、颜色、描述、类型字段,我在文档中添加了这些字段
class Car(models.Model):
name = models.CharField(max_length=50)
color = models.CharField(max_length=50)
description = models.TextField()
type = models.IntegerField(choices=[
(1, "Sedan"),
(2, "Truck"),
(4, "SUV"),
])
my documents.py文件->
from django_elasticsearch_dsl import Document
from django_elasticsearch_dsl.registries import registry
from .models import Car
@registry.register_document
class CarDocument(Document):
class Index:
name = 'cars'
settings = {'number_of_shards': 1,
'number_of_replicas': 0}
class Django:
model = Car
fields = [
'name',
'color',
'description',
'type',
]
但是,当我试图反驳索引时,它给出了新的连接错误。下面给出了我用来重建索引的命令->
python manage.py search_index --rebuild
1条答案
按热度按时间pxy2qtax1#
首先,确保您已正确安装和配置elasticsearch服务(您可以使用此文档)。此错误表示您的代码无法连接到
ElasticSearch
使用当前配置提供服务。检查弹性服务是否启动并运行。在基于linux的操作系统中,您可以通过$ sudo systemctl status elasticsearch.service
在结果页面你应该看到Active: active (running)
. 完成此步骤后,请检查urlhttp://localhost:9200/
(如果您没有更改默认设置)并且如果一切正常,您将看到以下结果:您也可以使用启动此服务
$ sudo systemctl start elasticsearch.service
. 另一种可能性是,可能您以错误的方式配置了弹性变量。例如,使用错误的端口而不是默认端口(即9200)也会引发相同的错误。在下面的示例中,您可以看到一个弹性配置的示例,它将放在项目的settings.py
: