2013-04-20 3 views
6

Im usando django-haystack con elasticsearch ma c'è un problema con l'indicizzazione. Quando si ricostruisce il mio indice è cresciuto Django haystack with elasticsearch, indexing issue

 python manage.py rebuild_index
seguente errore:

 
Traceback (most recent call last): 
    File "/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 210, in handle_label 
    self.update_backend(label, using) 
    File "/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 256, in update_backend 
    do_update(backend, index, qs, start, end, total, self.verbosity) 
    File "/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/management/commands/update_index.py", line 78, in do_update 
    backend.update(index, current_qs) 
    File "/home/palo/.virtualenvs/toro/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 177, in update 
    self.conn.bulk_index(self.index_name, 'modelresult', prepped_docs, id_field=ID) 
    File "/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py", line 95, in decorate 
    return func(*args, query_params=query_params, **kwargs) 
    File "/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py", line 366, in bulk_index 
    query_params=query_params) 
    File "/home/palo/.virtualenvs/toro/src/pyelasticsearch/pyelasticsearch/client.py", line 221, in send_request 
    **({'data': request_body} if body else {})) 
    File "/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py", line 387, in post 
    return self.request('POST', url, data=data, **kwargs) 
    File "/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py", line 345, in request 
    resp = self.send(prep, **send_kwargs) 
    File "/home/palo/.virtualenvs/toro/src/requests/requests/sessions.py", line 448, in send 
    r = adapter.send(request, **kwargs) 
    File "/home/palo/.virtualenvs/toro/src/requests/requests/adapters.py", line 324, in send 
    raise Timeout(e) 
Timeout: HTTPConnectionPool(host='127.0.0.1', port=9200): Request timed out. (timeout=10) 
Timeout: HTTPConnectionPool(host='127.0.0.1', port=9200): Request timed out. (timeout=10) 

ho usato django-pagliaio - 2.0.0-beta, pyelasticsearch - 0,5, elasticsearch 0.20.6, la versione Java "1.6.0_24"


Impostazioni Haystack

 

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

e sono sicuro che il mio elasticsearch avercela data è in esecuzione.

+0

Sembra che l'istanza elasticsearch non è disponibile. Qual è il risultato di "curl -XGET 'localhost: 9200'"? Dovresti vedere l'output JSON con lo stato e la versione del server. – bennylope

+0

È stato risolto o no –

risposta

13

Ciò non significa necessariamente che il proprio server è inattivo, soprattutto se si ottiene un risultato ragionevole con curl -I "127.0.0.1:9200". Più probabilmente, questo è un problema della tua richiesta semplicemente non ottenere abbastanza tempo data la velocità delle connessioni coinvolte.

È interessante notare che il timeout predefinito impostato in pyelasticsearch è di 60 secondi, vedere def __init__(self, urls, timeout=60, max_retries=0, revival_delay=300): in https://github.com/rhec/pyelasticsearch/blob/master/pyelasticsearch/client.py. Tuttavia, il pagliaio lo sovrascrive con l'impostazione predefinita, che è 10 secondi, come da self.timeout = connection_options.get('TIMEOUT', 10) in https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/__init__.py.

Come potete vedere, il pagliaio consente di modificare facilmente le impostazioni, aggiungendo 'TIMEOUT': 60, alla configurazione del motore.

e risolto :)

-2

sono in esecuzione

bin/elasticsearch -f 

Credo che non si sta eseguendo il searchengine.

1

Anch'io ho avuto il problema simile

servizio sudo elasticsearch riavviare

allora funzionato

+0

Questo ha risolto il mio problema dopo che il mio server aveva esaurito lo spazio su disco. – creimers