首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RequestError: TransportError(400,u‘’parsing_exception‘) django haystack

RequestError: TransportError(400,u‘’parsing_exception‘) django haystack
EN

Stack Overflow用户
提问于 2017-03-21 15:44:14
回答 1查看 698关注 0票数 2

我正在尝试将django-haystack与djangorestframework和elasticsearch结合使用,并遵循教程here

我已经在我的虚拟环境中安装了以下软件包

代码语言:javascript
复制
djangorestframework==3.5.4
drf-haystack==1.6.1
elasticsearch==1.5.0

干草堆设置

代码语言:javascript
复制
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack',
    },
}

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    ),
}

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'drf',
    'haystack',
    'rest_framework',
    'rest_framework.authtoken',
]

但是,每当我尝试以python manage.py rebuild_inex的身份进行rebuild_index,或者尝试使用http://localhost:8000/api/v1/location/search/?city=Hyderabad中的API检索结果时,我都会得到以下错误,并且我已经用谷歌搜索了很多关于这方面的信息,但无法获得任何帮助

代码语言:javascript
复制
Failed to query Elasticsearch using 'city:(Hyderabad)': TransportError(400, u'parsing_exception')
Traceback (most recent call last):
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 524, in search
    _source=True)
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 69, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 504, in search
    params=params, body=body)
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/elasticsearch/transport.py", line 307, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 89, in perform_request
    self._raise_error(response.status, raw_data)
  File "/Users/shivakrishna/.virtualenvs/ipitch/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 105, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
RequestError: TransportError(400, u'parsing_exception')

我读过一些文章,上面的错误是由于elasticsearch 2.0.0以上的版本造成的,但我已经安装了1.5.0,但我仍然面临着上面的错误。

有人能告诉我如何解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-06-01 18:06:56

当涉及到Django-Python时,Elasticsearch有一些依赖关系。请安装pyelasticsearch,所有的依赖项,如urllib3,elasticsearch和更多都将与之一起安装。

确保在安装后elasticsearch的版本是1.x.y (2.x.y也可以),否则将elasticsearch降级到<2.0.0,这可以通过requirements.txt或其他方式完成。

此外,请检查并在http://127.0.0.1:9200/上发布查询结果,因为这将显示您系统上的elasticsearch版本。我认为这应该是问题所在,因为你附加的日志显示了与版本问题相关的错误,这也是我几天来面临的问题。

更重要的是,你启动elasticsearch服务器了吗?也要检查docs中的这一点。

如果有效,请让我知道。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42921006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档