Transport Error 400 (parsing_exception)

I was able to successfully index my database, but while searching, I get the following error( I searched for the letter 'i'). 'first_name' is the name of a column in one of the models in PostGresql database in Django project. I am using django-haystack front-end for ease of use with Django:

Failed to query Elasticsearch using 'first_name:(i)': TransportError(400, u'parsing_exception', u'no [query] registered for [filtered]')
Traceback (most recent call last):
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 524, in search
    _source=True)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 623, in search
    doc_type, '_search'), params=params, body=body)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/transport.py", line 312, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 128, in perform_request
    self._raise_error(response.status, raw_data)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
RequestError: TransportError(400, u'parsing_exception', u'no [query] registered for [filtered]')
Failed to query Elasticsearch using 'body:(i)': TransportError(400, u'parsing_exception', u'no [query] registered for [filtered]')
Traceback (most recent call last):
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 524, in search
    _source=True)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/client/utils.py", line 73, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/client/__init__.py", line 623, in search
    doc_type, '_search'), params=params, body=body)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/transport.py", line 312, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/connection/http_urllib3.py", line 128, in perform_request
    self._raise_error(response.status, raw_data)
  File "/home/utkarsh/project/site/local/lib/python2.7/site-packages/elasticsearch/connection/base.py", line 125, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
RequestError: TransportError(400, u'parsing_exception', u'no [query] registered for [filtered]')
[22/Jun/2017 12:59:53] "GET /shocksnmocks/searchnews/?search_text=i&_=1498116587943 HTTP/1.1" 200 1192

Is it because I have empty rows in the 'first_name' column?

I was facing this error because django-haystack is not compatible with Elasticsearch version 5. It is running smoothly with an older version.

Hey,

the string no [query] registered for [filtered] in the exception is the key. I think you are using a old filtered query, that worked in 2.x, but does not in 5.x. Instead of using a filtered query consisting of a query and a filter, you can now use a bool query like this

"bool": {
  "must" : [ YOUR_QUERY ],
  "filter" : {YOUR_FILTER}
}

Hope this helps!

--Alex

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.