You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Haystack教程报错:__call__()收到意外关键字参数'version'

解决Django Haystack + Elasticsearch 7的__call__() got an unexpected keyword argument 'version'错误

嘿,这个问题我之前碰到过好几次,大概率是Haystack版本和Elasticsearch 7不兼容导致的!别慌,我一步步给你说怎么解决,以及后续排查需要的信息:

核心原因

旧版的Django Haystack(比如v2.x系列)的Elasticsearch后端在调用ES客户端时,会传递version这个参数,但Elasticsearch 7对应的Python客户端已经移除了这个参数,所以就会抛出这个不识别参数的错误。

快速修复步骤

  • 升级Haystack到兼容ES7的版本:你需要安装django-haystack 3.0及以上版本,这是官方开始支持Elasticsearch 7+的版本。执行命令:
    pip install --upgrade django-haystack
    
  • 更换ES7专用的后端:打开你的settings.py,把搜索引擎后端从旧的haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine改成ES7专属的:
    HAYSTACK_CONNECTIONS = {
        'default': {
            'ENGINE': 'haystack.backends.elasticsearch7_backend.Elasticsearch7SearchEngine',
            'URL': 'http://127.0.0.1:9200/',  # 你的ES地址
            'INDEX_NAME': 'haystack',
        },
    }
    
  • 重建索引:升级和改配置后,一定要重建索引确保结构兼容:
    python manage.py rebuild_index
    

如果还是有问题,需要提供这些信息方便排查

因为你刚接触Django,可能不知道该给啥,我列几个关键的:

  • 你的requirements.txt内容,或者执行pip freeze后的输出(能看到django、haystack、elasticsearch-py这些包的具体版本)
  • settings.py里关于Haystack的完整配置代码
  • 触发这个错误的具体操作代码(比如视图里的搜索逻辑,或者你运行的命令)
  • 完整的错误栈traceback(不只是那一行错误,要包含所有调用栈信息,能帮我们定位具体是哪个环节出问题)

内容的提问来源于stack exchange,提问作者illiteratewriter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:27:56