0

尝试在 django-haystack 上为 elasticsearch 构建索引时,出现错误(下面的完整回溯)

TypeError: index_queryset() got an unexpected keyword argument 'using'

它在 Python 2.6、Django 1.4、ElasticSearch 0.20.2 上。以前我遇到过类似的预取错误,这是 pyelasticsearch 和 requests 库之间版本不匹配的情况。我试图将请求降级到 0.13,但没有效果。pyelasticsearch 目前是 0.3

非常感谢任何帮助!

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/var/www/myproj/myproj-env/lib/python2.6/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/var/www/myproj/myproj-env/lib/python2.6/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/var/www/myproj/myproj-env/lib/python2.6/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/var/www/myproj/myproj-env/lib/python2.6/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/var/www/myproj/myproj-env/src/django-haystack/haystack/management/commands/update_index.py", line 184, in handle
    return super(Command, self).handle(*items, **options)
  File "/var/www/myproj/myproj-env/lib/python2.6/site-packages/django/core/management/base.py", line 341, in handle
    label_output = self.handle_label(label, **options)
  File "/var/www/myproj/myproj-env/src/django-haystack/haystack/management/commands/update_index.py", line 210, in handle_label
    self.update_backend(label, using)
  File "/var/www/myproj/myproj-env/src/django-haystack/haystack/management/commands/update_index.py", line 239, in update_backend
    end_date=self.end_date)
  File "/var/www/myproj/myproj-env/src/django-haystack/haystack/indexes.py", line 157, in build_queryset
    index_qs = self.index_queryset(using=using)
TypeError: index_queryset() got an unexpected keyword argument 'using'
4

1 回答 1

0

问题出在 django-haystack 的版本中。当前版本是 0.3,而几个月前是 1.0,这有点误解。

我解决问题的方法简单明了——安装最新版本(0.3),然后获取旧版本(在本例中为 1.0)并简单地覆盖 haystack 源。

结论:“较旧的 1.0”适用于所有先决条件(pyelasticsearch、simplejson 和请求)的最新版本,而“较新的 0.3”则不能

于 2013-02-17T22:09:47.340 回答