7

我将 django-haystack 与 elasticsearch 一起使用,但索引存在问题。重建我的索引时

python manage.py rebuild_index
引发以下错误:

回溯(最近一次通话最后):
  文件“/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py”,第 210 行,在 handle_label
    self.update_backend(标签,使用)
  文件“/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py”,第 256 行,在 update_backend
    do_update(后端,索引,qs,开始,结束,总计,self.verbosity)
  文件“/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py”,第 78 行,在 do_update
    后端.更新(索引,current_qs)
  文件“/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py”,第 177 行,更新中
    self.conn.bulk_index(self.index_name, 'modelresult', prepped_docs, id_field=ID)
  文件“/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py”,第 95 行,在装饰中
    返回函数(*args,query_params=query_params,**kwargs)
  文件“/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py”,第 366 行,在 bulk_index
    查询参数=查询参数)
  文件“/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py”,第 221 行,在 send_request
    **({'data': request_body} if body else {}))
  文件“/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py”,第 387 行,在帖子中
    return self.request('POST', url, data=data, **kwargs)
  文件“/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py”,第 345 行,在请求中
    resp = self.send(prep, **send_kwargs)
  发送中的文件“/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py”,第 448 行
    r = adapter.send(request, **kwargs)
  文件“/home/palo/.virtualenvs/toro/src/requests/requests/adapters.py”,第 324 行,在发送中
    提高超时(e)
超时:HTTPConnectionPool(host='127.0.0.1', port=9200):请求超时。(超时=10)
超时:HTTPConnectionPool(host='127.0.0.1', port=9200):请求超时。(超时=10)

我使用了 django-haystack - 2.0.0-beta,pyelasticsearch - 0.5,elasticsearch 0.20.6,java 版本“1.6.0_24”


干草堆设置

    HAYSTACK_CONNECTIONS = {
        '默认': {
            '引擎': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
            '网址': 'http://127.0.0.1:9200/',
            'INDEX_NAME': '干草堆',
        },
    }

而且我确定我的弹性搜索服务正在运行。

4

3 回答 3

15

这并不一定意味着您的 es 服务器已关闭,尤其是当您通过curl -I "127.0.0.1:9200". 更有可能的是,鉴于所涉及的连接速度,您的请求根本没有得到足够的时间。

有趣的是,pyelasticsearch 中设置的默认超时时间是 60 秒,def __init__(self, urls, timeout=60, max_retries=0, revival_delay=300):参见https://github.com/rhec/pyelasticsearch/blob/master/pyelasticsearch/client.py但是,根据https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/__init__.pyself.timeout = connection_options.get('TIMEOUT', 10)中的规定,haystack 会使用其默认设置(即 10 秒)覆盖它。

正如您所看到的,haystack 允许您通过添加'TIMEOUT': 60,到引擎配置来轻松修改设置。

并解决了:)

于 2013-05-23T10:37:00.013 回答
1

我也有类似的问题

须藤服务弹性搜索重启

然后它起作用了

于 2014-02-20T10:13:38.227 回答
-2

你在跑步吗

bin/elasticsearch -f 

我认为您没有运行搜索引擎。

于 2013-06-24T17:12:35.940 回答