2012-12-03 12 views
7

が、私は、次のエラーが発生します elasticsearchバックエンドとセットアップ干し草検索しようとしていますと干し草の山:IndexMissingException Djangoはelasticsearch

./manage.py rebuild_index 
... 
Failed to clear Elasticsearch index: (404, u'IndexMissingException[[haystack] missing]') 

ただし、次のコマンドの作品:今すぐ

curl -XPUT http://33.33.33.1:9200/haystack 
{"ok":true,"acknowledged":true} 
curl -XGET http://33.33.33.1:9200/haystack/test/something 
{"_index":"haystack","_type":"test","_id":"something","exists":false} 

、実行後

./manage.py rebuild_index 
... 
Failed to clear Elasticsearch index: (404, u'IndexMissingException[[haystack] missing]') 

突然t他の場所で示唆したように、私も試してみました

curl -XGET http://33.33.33.1:9200/haystack/test/something 
{"error":"IndexMissingException[[haystack] missing]","status":404} 

{"error":"IndexMissingException[[haystack] missing]","status":404} 

私は実行しています:同じ結果に

from django.core import management 
from haystack import connections 
backend = connections['default'].get_backend() 
backend.setup_complete = False 
backend.existing_mapping = None 
management.call_command('rebuild_index', interactive=False, verbosity=0) 

今期待通りに働いていた彼のコマンドは次のエラーを与えますDjango 1.4.2、django-haystack HEAD from github and pyelasticsearch HEAD from github

config :

HAYSTACK_CONNECTIONS = { 
    'default': { 
    'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 
    'URL': 'http://33.33.33.1:9200/', 
    'INDEX_NAME': 'haystack', 
    }, 
} 

誰でも手伝ってもらえますか?

答えて

6

愚かな私。私はIndexクラスをindexesから拡張しませんでした。haystack 2の要求に応じてとなりました。したがって、haystackは単にインデックスを取得せず、通知なく正しく終了しました。 エラーメッセージは多少誤解を招くことがあります。 Haystackはインデックスが既に存在するかどうかにかかわらず、あなたがrebuild_indexを呼び出すと、それを与えると思われます。

+0

エラーの原因は、ElasticSearchのHaystackバックエンドがインデックスを削除した後にインデックスを更新しようとしているためです。 https://github.com/toastdriven/django-haystack/pull/647を参照してください。 – hekevintran

1

インデックスを作成する代わりに、インデックスを使用してインデックスを作成します。./manage.py update_index 保存するだけでその日を保存します。