2015-03-31 9 views
7

Sto usando django-haystack (v 2.3.1) con solr (v 5.0.0) e pysolr (v 3.0.0). Ho seguito lo tutorial e ho impostato file simili myapp/search_indexes.py e search/indexes/myapp/mymodel_text.txt.django-haystack: impossibile aggiungere documenti a Solr: [Motivo: errore 404 non trovato]

./manage.py build_solr_schema > schema.xml funziona correttamente e l'ho copiato in $ SOLR_HOME/conf/schema.xml.

Il problema si verifica quando provo ./manage.py rebuild_index. Per prima cosa, mi viene chiesto di confermare:

ATTENZIONE: questo rimuoverà irreparabilmente TUTTO dal tuo indice di ricerca in connessione 'default'.
Le opzioni che seguono sono quelle di ripristinare dai backup o ricostruire tramite il comando rebuild_index.
Sei sicuro di voler continuare? [Y/N] y

Poi, non riesce:

Rimuovere tutti i documenti dal proprio indice perché hai detto così.
Impossibile cancellare l'indice Solr: [Motivo: errore 404 non trovato]
Tutti i documenti rimossi.
indicizzazione 6 storie
Impossibile aggiungere documenti a Solr: [Motivo: Errore 404 Not Found]

mie impostazioni di connessione sono:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr', 
    }, 
} 

Se ci si dirige a questo URL I posso vedere la pagina di amministrazione di solr. Mi sono assicurato che la porta 8983 sia aperta per solr (così come 8000 per il server di sviluppo Django).

Mi sembra di non aver fornito sufficienti informazioni di connessione, ma che altro c'è da controllare?

UPDATE:
Pur risolto questo problema non erano più a venire, che erano tutti fissato mediante utilizzando solr (v.4.7.0) invece, come django-pagliaio non è pronto per solr 5 (c'era un problema relativo a questo, ma non posso più trovare su github

risposta

4

Th chiedi a user366722 per suggerire di specificare il core nelle impostazioni. Tuttavia, avevo trascurato un passaggio ancora più fondamentale di creando il core!

Soluzione:
Creare il nucleo, che specifica il nome del nucleo (per esempio 'default') e la porta (ad esempio8983):

$bin/solr create_core -c default -p 8983

Poi, basta specificare il nome del nucleo (ad esempio 'default') nelle impostazioni URL mucchio di fieno:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr/default', 
    }, 
} 

Fatto!

Ora, ottengo

Rimuovere tutti i documenti dal proprio indice perché hai detto così.
Tutti i documenti rimossi.
indicizzazione 3 storie

UPDATE:
Al momento di scrivere, ho anche passato a Solr 4.7.0 per farlo funzionare, come pagliaio non era pronto per solr 5.x

+0

bin/solr create_core -c default -p 8983 puoi dirmi quale bin?! Grazie –

+0

quale cestino dipende da dove lo hai installato – ZG101

1

avuto lo stesso problema e trovato la risposta:. https://stackoverflow.com/a/29833997/366722 è necessario specificare il nucleo nel tuo URL

+0

Quale versione di solr stai usando? Apparentemente [la struttura del file solr.xml è cambiata] (https://wiki.apache.org/solr/Solr.xml%204.4%20and%20beyond): "In poche parole, [come da solr v5.0 ] e sono stati sostituiti da nuclei di rilevamento automatico. " Come ho rinunciato al momento, non sono sicuro se django-haystack fosse in grado di produrre un file solr.xml compatibile per la v5 di solr (cioè senza ). – ZG101

+0

Questo è corretto. Sto usando 5.1.0 e configurandolo usando una vecchia documentazione di pagliaio che usa 4.x. – siavach

Problemi correlati