2012-12-03 14 views
7

Sto cercando di impostazione con ricerca pagliaio con elasticsearch backend Sto ricevendo il seguente errore:IndexMissingException - Django pagliaio con elasticsearch

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

Tuttavia, le seguenti opere di comando:

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} 

Ora, dopo aver aperto

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

di nuovo, improvvisamente t ha il comando che ha funzionato come previsto ora dà il seguente errore:

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

Come suggerito in altri posti che ho provato anche:

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) 

con lo stesso risultato:

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

Sono in esecuzione Django 1.4.2, django-haystack HEAD da github e pyelasticsearch HEAD da github

config :

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

Qualcuno può aiutarmi?

risposta

6

Stupido me. Non ho esteso la mia classe Index dagli indici .Indexable come richiesto dal pagliaio 2. Pertanto il pagliaio semplicemente non ha ritirato il mio indice e ha terminato correttamente senza ulteriori avvisi. Il messaggio di errore è in qualche modo fuorviante. Haystack sembra dargli sempre se invochi rebuild_index, non importa se l'indice esistesse già o meno.

+0

Il motivo dell'errore è che il backend Haystack per ElasticSearch sta tentando di aggiornare l'indice dopo aver eliminato l'indice. Vedi https://github.com/toastdriven/django-haystack/pull/647. – hekevintran

1

Bene creare indice tramite arricciatura e invece di ricostruire indice uso ./manage.py update_index Solo per salvare il giorno.

Problemi correlati