Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Haystack:elasticsearch_后端模块中的KeyError_Django_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Django Haystack - Fatal编程技术网 elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" /> elasticsearch,django-haystack,Django,elasticsearch,Django Haystack" />

Django Haystack:elasticsearch_后端模块中的KeyError

Django Haystack:elasticsearch_后端模块中的KeyError,django,elasticsearch,django-haystack,Django,elasticsearch,Django Haystack,我正在使用Django+Haystack+Elasticsearch 当我向此视图发送请求时 from haystack.views import FacetedSearchView from .models import Object class ObjectView(FacetedSearchView): def extra_context(self): extra = super(ObjectView, self).extra_context()

我正在使用Django+Haystack+Elasticsearch

当我向此视图发送请求时

from haystack.views import FacetedSearchView

from .models import Object


class ObjectView(FacetedSearchView):

    def extra_context(self):
        extra = super(ObjectView, self).extra_context()

        if not self.results:
            extra['objects'] = Object.objects.all()
        else:
            searchqueryset = self.form.search()
            results = [ result.pk for result in searchqueryset ]
            extra['facets'] = self.results.facet_counts()
            extra['objects'] = Object.objects.filter(pk__in=results)
            extra['results'] = self.results
        return extra
出现以下错误:

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/views.py", line 49, in __call__
    return self.create_response()

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/views.py", line 129, in create_response
    (paginator, page) = self.build_page()

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/views.py", line 106, in build_page
    self.results[start_offset:start_offset + self.results_per_page]

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/query.py", line 266, in __getitem__
    self._fill_cache(start, bound)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/query.py", line 164, in _fill_cache
    results = self.query.get_results(**kwargs)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/backends/__init__.py", line 485, in get_results
    self.run(**kwargs)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 942, in run
    results = self.backend.search(final_query, **search_kwargs)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/backends/__init__.py", line 26, in wrapper
    return func(obj, query_string, *args, **kwargs)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 521, in search
    distance_point=kwargs.get('distance_point'), geo_sort=geo_sort)

  File "/home/deploy/.virtualenvs/deploy/local/lib/python2.7/site-packages/haystack/backends/elasticsearch_backend.py", line 571, in _process_results
    raw_suggest = raw_results['suggest']['suggest']

KeyError: 'suggest'
一个奇怪的事实:只有当项目处于生产设置下时,问题才会出现,即使我没有在settings\u生产模块中更改任何涉及Haystack或Elasticsearch的内容(URL键除外)

项目/设置\u production.py

'URL': 'http://0.0.0.0:9200/'
在生产中,我只使用了一个简单的FastCGI

而真正困扰我的是:有时候我在这个视图上没有错误,而且一切都很好

拜托,有人知道发生了什么吗

非常感谢

更新:

所以,我在另一台计算机上设置了我的整个项目。经过一些测试后,我证实:

  • 这个问题与我的生产设置无关,就像我一样 如上所述

  • elasticsearch服务停止时不会引发错误

  • 如果服务正在运行

    • 当方法
      Object.objects.all()
      返回一些QuerySet结果时,我没有得到任何错误
    • 当方法
      Object.objects.all()
      返回一个空QuerySet时,问题仍然存在
  • 我猜这是Haystack的elasticsearch_后端模块中的某种缺陷


    不过,我还是不确定。

    是的,这是大海捞针。我已经提出了一个建议,但与此同时,开始运行的选项有:

  • 将haystack设置中的
    包含拼写设置设置为
    False
    ,或
  • 使用我们的叉子: