2012-12-03 24 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]') 

फिर से चलने के बाद, अचानक टी के रूप में अन्य स्थानों में सुझाव दिया

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, github से pjelasticsearch HEAD से django-haystack HEAD

कॉन्फ़िगरेशन :

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

क्या कोई मेरी मदद कर सकता है?

उत्तर

6

बेवकूफ मुझे। मैंने इंडेक्स से इंडेक्स क्लास का विस्तार नहीं किया। इंडेक्स हैस्टैक 2 द्वारा आवश्यकतानुसार। इसलिए हैस्टैक ने मेरी इंडेक्स नहीं ली और आगे की सूचना के बिना सही तरीके से समाप्त नहीं किया। त्रुटि संदेश कुछ हद तक भ्रामक है। हेस्टैक हमेशा इसे देता है अगर आप rebuild_index का आह्वान करते हैं, इससे कोई फर्क नहीं पड़ता कि सूचकांक पहले से मौजूद है या नहीं।

+0

त्रुटि का कारण यह है कि ElasticSearch के लिए हेस्टैक बैकएंड इंडेक्स को हटा दिए जाने के बाद इंडेक्स को रीफ्रेश करने का प्रयास कर रहा है। Https://github.com/toastdriven/django-haystack/pull/647 देखें। – hekevintran

1

अच्छी तरह से कर्ल के माध्यम से और सूचकांक उपयोग के पुनर्निर्माण के बजाय इंडेक्स बनाएं ./manage.py update_index बस दिन को बचाने के लिए।