我正在制作一个Django应用。它使用带有弹性搜索的Haystack作为后端。
当我跑步时
./manage.py rebuild_index
我收到此错误:
已中止。',错误(61,'连接被拒绝'))) 引起的:ProtocolError(('连接中止。',错误(61,'连接被拒绝'))
导致这种情况的原因是什么?
日志:
./manage.py rebuild_index
No handlers could be found for logger "django_facebook.models"
WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y
Removing all documents from your index because you said so.
Failed to clear Elasticsearch index: ConnectionError(('Connection aborted.', error(61, 'Connection refused'))) caused by: ProtocolError(('Connection aborted.', error(61, 'Connection refused')))
All documents removed.
Indexing 4 restos
ERROR:root:Error updating litchee using default
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 221, in handle_label
self.update_backend(label, using)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 266, in update_backend
do_update(backend, index, qs, start, end, total, self.verbosity)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 89, in do_update
backend.update(index, current_qs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 184, in update
bulk_index(self.conn, prepped_docs, index=self.index_name, doc_type='modelresult')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 145, in bulk
for ok, item in streaming_bulk(client, actions, **kwargs):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 104, in streaming_bulk
resp = client.bulk(bulk_actions, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 68, in _wrapped
return func(*args, params=params, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 646, in bulk
params=params, body=self._bulk_body(body))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/transport.py", line 284, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 51, in perform_request
raise ConnectionError('N/A', str(e), e)
ConnectionError: ConnectionError(('Connection aborted.', error(61, 'Connection refused'))) caused by: ProtocolError(('Connection aborted.', error(61, 'Connection refused')))
Traceback (most recent call last):
File "./manage.py", line 11, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/rebuild_index.py", line 16, in handle
call_command('update_index', **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/__init__.py", line 159, in call_command
return klass.execute(*args, **defaults)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 195, in handle
return super(Command, self).handle(*items, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/management/base.py", line 385, in handle
label_output = self.handle_label(label, **options)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 221, in handle_label
self.update_backend(label, using)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 266, in update_backend
do_update(backend, index, qs, start, end, total, self.verbosity)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 89, in do_update
backend.update(index, current_qs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 184, in update
bulk_index(self.conn, prepped_docs, index=self.index_name, doc_type='modelresult')
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 145, in bulk
for ok, item in streaming_bulk(client, actions, **kwargs):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/helpers/__init__.py", line 104, in streaming_bulk
resp = client.bulk(bulk_actions, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 68, in _wrapped
return func(*args, params=params, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 646, in bulk
params=params, body=self._bulk_body(body))
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/transport.py", line 284, in perform_request
status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 51, in perform_request
raise ConnectionError('N/A', str(e), e)
elasticsearch.exceptions.ConnectionError: ConnectionError(('Connection aborted.', error(61, 'Connection refused'))) caused by: ProtocolError(('Connection aborted.', error(61, 'Connection refused')))
运行bin / elasticsearch给出了这个:
[2014-08-25 17:53:38,901][INFO ][node ] [Arize] version[1.3.1], pid[1781], build[2de6dc5/2014-07-28T14:45:15Z]
[2014-08-25 17:53:38,902][INFO ][node ] [Arize] initializing ...
[2014-08-25 17:53:38,976][INFO ][plugins ] [Arize] loaded [], sites []
[2014-08-25 17:53:54,722][INFO ][node ] [Arize] initialized
[2014-08-25 17:53:54,734][INFO ][node ] [Arize] starting ...
[2014-08-25 17:53:56,131][INFO ][transport ] [Arize] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.83:9300]}
[2014-08-25 17:53:57,168][INFO ][discovery ] [Arize] elasticsearch/uWwljr09R0-hZ1-5eH4NlQ
[2014-08-25 17:54:00,714][INFO ][cluster.service ] [Arize] new_master [Arize][uWwljr09R0-hZ1-5eH4NlQ][deeptis-mbp.local.lan][inet[/192.168.1.83:9300]], reason: zen-disco-join (elected_as_master)
[2014-08-25 17:54:00,987][INFO ][http ] [Arize] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.83:9200]}
[2014-08-25 17:54:00,988][INFO ][node ] [Arize] started
[2014-08-25 17:54:01,337][INFO ][gateway ] [Arize] recovered [0] indices into cluster_state
但是在运行ps -A时 elasticsearch不会显示为正在运行的进程。
我做错了什么?
答案 0 :(得分:8)
拒绝连接意味着拒绝与Elasticsearch HTTP服务的TCP连接。原因可能是许多事情,例如您使用错误的主机或端口作为HTTP端点,或者弹性搜索节点由于某种原因未运行。
在尝试使用Haystack之前,通过发出类似以下内容的直接HTTP请求来测试elasticsearch的工作原理:
curl -X GET http://192.168.77.88:9200/_cat/indices
其中192.168.77.88
是elasticsearch节点的IP地址,9200
是TCP端口。如果成功,请检查并仔细检查您在Haystack配置中是否具有相同的URL配置。
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://192.168.77.88:9200/',
'INDEX_NAME': 'haystack',
},
}
答案 1 :(得分:1)
我遇到了同样的问题。通过在端口9200上实际运行Elasticsearch来解决问题。如果您在Windows上,请转到Elasticsearch安装的bin目录并运行您正在使用的任何Elasticsearch版本的批处理文件。