下面就为大家详细讲解" Django之创建引擎索引报错及解决详解 "的完整攻略。
问题概述
在Django项目中,当我们使用Django内置的search引擎来创建索引时,可能会遇到以下报错提示:
django.core.exceptions.ImproperlyConfigured: Error loading interface c:...\solr\bin\http://127.0.0.1:8983/solr: Failed to connect to 127.0.0.1: Connection refused
这是因为Django默认使用Solr作为搜索引擎,在创建索引时会自动连接本地的Solr服务。但是由于各种原因,连接失败导致了报错。
解决步骤
步骤一:确认Solr服务是否已启动
首先要确认Solr服务是否已经启动,可以在终端命令中运行以下命令来启动Solr服务:
cd solr/bin
./solr start
如果已经启动,则可以看到以下输出:
Started Solr server on port 8983 (pid=XXXXX). Happy searching!
步骤二:检查settings.py配置文件
如果Solr服务已启动,那么我们就需要检查Django项目的settings.py配置文件是否正确设置了搜索引擎的主机、端口等信息。
使用以下代码来设置搜索引擎:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://127.0.0.1:8983/solr/',
'TIMEOUT': 60 * 5,
'INCLUDE_SPELLING': True,
},
}
在这里我们需要确保URL参数中的主机地址和端口信息正确,并且确保Solr服务的版本和Django项目中使用的Solr版本一致。
步骤三:重启Django项目
如果以上两步的检查都没有问题,但是还是无法创建索引,那么我们需要尝试重启Django项目,以确保新的设置生效。
可以在终端命令中运行以下命令来重启Django项目:
python manage.py runserver
如果还是遇到报错,那么可以尝试清空Solr服务的索引,并重新创建索引。
示例说明
示例1
假设我们的Django项目中的settings.py文件中的HAYSTACK_CONNECTIONS参数如下:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://127.0.0.1:8983/solr/',
'TIMEOUT': 60 * 5,
'INCLUDE_SPELLING': True,
},
}
当我们运行python manage.py rebuild_index
命令来创建索引时,出现以下报错:
django.core.exceptions.ImproperlyConfigured: Error loading interface c:...\solr\bin\http://127.0.0.1:8983/solr: Failed to connect to 127.0.0.1: Connection refused
解决方法:检查Solr服务是否已启动,如果没有启动则启动服务;或者检查settings.py文件中的URL参数是否正确设置。
示例2
假设我们已经成功连接到Solr服务,但是在创建索引时依旧报错,提示如下:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8983): Max retries exceeded with url: /solr/main/select/?q=*:*&fq=django_ct:main.article&rows=0&wt=json (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x10f430588>: Failed to establish a new connection: [Errno 111] Connection refused',))
解决方法:重启Django项目,并尝试清空Solr服务的索引,重新创建索引。如果依旧报错,则需要检查网络等其他问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django之创建引擎索引报错及解决详解 - Python技术站