django-haystack:无法向Solr添加文档:[原因:找不到错误404]

时间:2015-03-31 06:02:31

标签: solr django-haystack pysolr

我使用django-haystack(v 2.3.1)与solr(v 5.0.0)和pysolr(v 3.0.0)。我一直关注tutorial,并设置了类似的myapp/search_indexes.pysearch/indexes/myapp/mymodel_text.txt个文件。

./manage.py build_solr_schema > schema.xml工作正常,我已将其复制到$ SOLR_HOME / conf / schema.xml。

当我尝试./manage.py rebuild_index时会出现问题。首先,我要求确认:

  

警告:这将从您的搜索索引中无可挽回地删除所有连接'默认'。
  在此之后您的选择是从备份还原或通过rebuild_index命令重建   你确定要继续吗? [y / N] y

然后,它失败了:

  

因为您这样说,从索引中删除所有文件   无法清除Solr索引:[原因:未找到错误404]
  删除所有文件。
  索引6层楼   无法将文档添加到Solr:[原因:找不到错误404]

我的连接设置为:

#settings.py
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr',
    },
}

如果我导航到此网址,我可以查看solr管理页面。我确保端口8983对于solr是开放的(以及Django开发服务器的8000)。

我觉得我可能没有提供足够的连接信息,但还有什么可以检查?

更新
虽然我解决了这个问题,但还有更多的问题,使用solr(v.4.7.0)来修复所有,因为django-haystack不是为solr 5做好准备(有一个与此相关的问题,但我无法再在github找到它。

2 个答案:

答案 0 :(得分:5)

感谢user366722建议在设置中指定核心。但是,我忽略了创建核心的更基本步骤!

<强>解决方案:
创建核心,指定核心的名称(例如'default')和端口(例如8983):

  

$bin/solr create_core -c default -p 8983

然后,只需在haystack网址设置中指定核心名称(例如'default'):

#settings.py
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr/default',
    },
}

完成!

现在,我得到了

  

因为您这样说,从索引中删除所有文件   删除所有文件。
  索引3个故事

<强>更新
在撰写本文时,我还切换到solr 4.7.0以使其工作,因为haystack还没有为solr 5.x做好准备

答案 1 :(得分:1)

遇到同样的问题并找到答案:https://stackoverflow.com/a/29833997/366722 您需要在URL中指定核心