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

django-haystack: Failed to add documents to Solr: [Reason: Error 404 Not Found]

我将 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 时出现问题。首先,我被要求确认:

WARNING: This will irreparably remove EVERYTHING from your search index in connection 'default'.
Your choices after this are to restore from backups or rebuild via the rebuild_index command.
Are you sure you wish to continue? [y/N] y

然后,失败了:

Removing all documents from your index because you said so.
Failed to clear Solr index: [Reason: Error 404 Not Found]
All documents removed.
Indexing 6 stories
Failed to add documents to Solr: [Reason: Error 404 Not Found]

我的连接设置是:

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

如果我导航到此 url,我 可以 看到 solr 管理页面。我已确保端口 8983 已为 solr 打开(以及为 Django 开发服务器打开了 8000)。

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

更新:
尽管我解决了这个问题,但还有更多问题要解决,所有 使用 solr (v.4.7.0) 修复,作为 django- haystack 还没有为 solr 5 做好准备(有一个与此相关的问题,但我无法再在 github.

上找到它

遇到同样的问题并找到答案: 您需要在 URL

中指定核心

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

解法:
创建核心,指定核心名称(例如'default')和端口(例如8983):

$bin/solr create_core -c default -p 8983

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

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

完成!

现在,我得到了

Removing all documents from your index because you said so.
All documents removed.
Indexing 3 stories

更新:
在撰写本文时,我还切换到 solr 4.7.0 以使其工作,因为 haystack 还没有为 solr 5.x

做好准备