2016-12-28 8 views
6

Djangoプロジェクトでhaystackのバックエンドとしてelasticsearchを使用しています。私は上記のように検索に必要なものすべてを作成しました。hereしかし、私がTransportError(400、 'parsing_exception'、 'no [query]が[filtered]のために登録されています')を使ってトレースバックエラーをスローします。Django/Haystackエラー:elasticsearch.exceptions.RequestError:TransportError(400、 'parsing_exception'、...)

私はこの問題を捜した。しかし、解決策はありません。私はこれを解決するのを助けてくれてありがとう。

マイトレースバック:

Traceback (most recent call last): 
    File "c:\python34\lib\site- packages\haystack\backends\elasticsearch_backend.py", line 524, in search 
_source=True) 
    File "c:\python34\lib\site-packages\elasticsearch\client\utils.py", line 71, in _wrapped 
    return func(*args, params=params, **kwargs) 
    File "c:\python34\lib\site-packages\elasticsearch\client\__init__.py", line 569, in search 
    doc_type, '_search'), params=params, body=body) 
File "c:\python34\lib\site-packages\elasticsearch\transport.py", line 327, in perform_request 
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore, timeout=timeout) 
    File "c:\python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 124, in perform_request 
    self._raise_error(response.status, raw_data) 
    File "c:\python34\lib\site-packages\elasticsearch\connection\base.py", line 122, in _raise_error 
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info) 
elasticsearch.exceptions.RequestError: TransportError(400, 'parsing_exception', 'no [query] registered for [filtered]') 
[28/Dec/2016 17:06:58]"GET /search/?q=code HTTP/1.1" 200 395 

が更新-1:トレースバックの後、私はあなたがES 5.0とあなたを実行している見ることができるものから、== 1.7.0

GET /haystack/modelresult/_search?_source=true [status:400 request:0.001s] 
Failed to query Elasticsearch using '(code)': TransportError(400, 'parsing_exception') 
Traceback (most recent call last): 
    File "c:\python34\lib\site-packages\haystack\backends\elasticsearch_backend.py", line 524, in search 
_source=True) 
    File "c:\python34\lib\site-packages\elasticsearch\client\utils.py", line 69, in _wrapped 
    return func(*args, params=params, **kwargs) 
    File "c:\python34\lib\site-packages\elasticsearch\client\__init__.py", line 527, in search 
    doc_type, '_search'), params=params, body=body) 
    File "c:\python34\lib\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 "c:\python34\lib\site-packages\elasticsearch\connection\http_urllib3.py", line 93, in perform_request 
    self._raise_error(response.status, raw_data) 
    File "c:\python34\lib\site-packages\elasticsearch\connection\base.py", line 105, in _raise_error 
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info) 
elasticsearch.exceptions.RequestError: TransportError(400, 'parsing_exception') 
[28/Dec/2016 17:58:50]"GET /search/?q=code HTTP/1.1" 200 395 
+0

検索クエリを書いてください。私は同じ問題があり、それを解決することができません。 –

答えて

4

no [query] registered for [filtered]

をelasticsearchする格下げES 2.xで廃止されたfilteredクエリとremoved in ES 5.xを送信しています。

代わりにbool/filter queryに交換する必要があります。

ですから、このような何かを持っていた場合:

{ 
    "query": { 
    "filtered": { 
     "filter": {} 
    } 
    } 
} 

は、単にすでに filteredクエリを廃止

{ 
    "query": { 
    "bool": { 
     "filter": {} 
    } 
    } 
} 
+0

あなたの優しい答えをありがとう。私はDjango haystackとelasticsearchを使って新しいです。私のインデックスのboolをどこで置き換えるべきですか?私は、私の索引では、どのような照会もフィルターされた用語も見つけられません。そして私はV2.4.0への切り替えを試みましたが、同じエラーを返します。手伝ってくれませんか!! – sumanth

+2

[ES 2と5はまだサポートされていないため] ESを[1.7.5](https://www.elastic.co/downloads/past-releases/elasticsearch-1-7-5)にダウングレードする必要があります明らかにHaystackのhttps://github.com/django-haystack/django-haystack/issues/1465)。 – Val

+0

私はあなたの提案通りにダウングレードしましたが、今度は[フィルタリング]に登録されていない[クエリ]を除いて同じエラーが返されます。 – sumanth

0

Elasticsearchと交換してください。代わりにboolを使用してください。

私のために働く。

+0

私はelasticsearch 6とdjango-haystack 2.6.1を使用しています。まだ動作していません。私は私のelasticsearchをダウングレードする必要がありますか?また、どこでboolにフィルターをかけることができますか? – Tushant

+0

バージョンが一致していることを確認することをお勧めします。 –

+0

私はelasticsearchを5.0.1にダウングレードし、同じバージョンのシステムにelasticsearchもインストールしました。しかし、私がlocalhost:9200をカールすると、バージョン6.0.1が表示されますが、削除して5.0.1のバージョンを再インストールしました – Tushant

関連する問題