2013-04-20 6 views
6

मैं elasticsearch के साथ django-haystack का उपयोग कर रहा हूं लेकिन अनुक्रमण के साथ एक समस्या है। जब मेरे सूचकांक पुनर्निर्माण elasticsearch के साथ Django haystack, इंडेक्सिंग समस्या

 python manage.py rebuild_index
निम्न त्रुटि उठाया है:

 
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) 

मैं Django-भूसे के ढेर में इस्तेमाल किया - 2.0.0 बीटा, pyelasticsearch - 0.5, elasticsearch 0.20.6, जावा संस्करण "1.6.0_24"


Haystack सेटिंग

 

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

और इम यकीन है कि मेरे elasticsearch serivce चल रहा है।

+0

ऐसा लगता है कि आपके ElasticSearch उदाहरण उपलब्ध नहीं है लगता है काम किया था। "Curl -XGET 'localhost: 9200'" का नतीजा क्या है? आपको सर्वर स्थिति और संस्करण के साथ JSON आउटपुट देखना चाहिए। – bennylope

+0

क्या यह हल हो गया है या नहीं –

उत्तर

13

इसका मतलब यह नहीं है कि आपका ईएस सर्वर डाउन है, खासकर यदि आपको curl -I "127.0.0.1:9200" के साथ कुछ उचित लौटाया गया है। अधिक संभावना है, यह आपके अनुरोध का मुद्दा है जिसमें शामिल कनेक्शन की गति को पर्याप्त समय नहीं मिल रहा है।

दिलचस्प बात यह है कि pyelasticsearch में डिफ़ॉल्ट टाइमआउट सेट 60 सेकंड है, def __init__(self, urls, timeout=60, max_retries=0, revival_delay=300):https://github.com/rhec/pyelasticsearch/blob/master/pyelasticsearch/client.py में देखें। हालांकि, हैस्टैक ओवरराइट करता है कि इसकी डिफ़ॉल्ट सेटिंग के साथ, self.timeout = connection_options.get('TIMEOUT', 10)https://github.com/toastdriven/django-haystack/blob/master/haystack/backends/__init__.py में 10 सेकेंड है।

जैसा कि आप देख सकते हैं, हैस्टैक आपको अपने इंजन कॉन्फ़िगरेशन में 'TIMEOUT': 60, जोड़कर, अपनी सेटिंग को आसानी से संशोधित करने की अनुमति देता है।

और हल :)

-2

आप

bin/elasticsearch -f 

चल रहे हैं मुझे लगता है कि आप searchengine नहीं चल रहे हैं।

1

मैं भी इसी तरह की समस्या

sudo सेवा elasticsearch पुनः आरंभ

तो यह

+0

यह मेरे सर्वर को डिस्क स्पेस से बाहर होने के बाद हल हो गया। – creimers

संबंधित मुद्दे