RequestError: TransportError(400, u'parsing_exception') django haystack

Я пытаюсь использовать django-haystack с djangorestframework и asticsearch и следовал инструкциям здесь

Я установил следующие пакеты в моей виртуальной среде

djangorestframework==3.5.4
drf-haystack==1.6.1
elasticsearch==1.5.0

Настройки стога сена

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 или всякий раз, когда я пытался получить результаты, используя API в http://localhost:8000/api/v1/location/search/?city=Hyderabad, я получаю сообщение об ошибке ниже, и я много гуглил по этому поводу, но не смог получить какую-либо помощь

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')

Я читал где-то, что вышеупомянутая ошибка будет из-за версии asticsearch больше чем 2.0.0, но я установил 1.5.0, и все еще я сталкиваюсь с вышеупомянутой ошибкой.

Может кто-нибудь дать мне знать, как решить эту проблему?

1 ответ

Elasticsearch имеет некоторые зависимости, когда дело доходит до Django-Python. Пожалуйста, установите pyelasticsearch, с помощью которого будут установлены все зависимости, такие как urllib3,asticsearch и другие.

После установки убедитесь, что версия asticsearch - 1.xy (также может работать 2.xy), в противном случае понизьте эластичный поиск до <2.0.0, что можно сделать из requirements.txt или иным образом.

Дополнительно, пожалуйста, проверьте и опубликуйте результат запроса на http://127.0.0.1:9200/ так как это покажет версию эластичного поиска, которую вы используете в своей системе. Я думаю, что это должно быть проблемой, поскольку журнал, который вы приложили, показывает ошибки, связанные с проблемами версий, с которыми я также сталкивался в течение нескольких дней.

Что еще более важно, вы запустили сервер Flexiblesearch? Проверьте документы для этого также.

Дайте мне знать, если это работает.

Другие вопросы по тегам