2015-03-31 96 views
7

我使用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文件。django-haystack:无法将文档添加到Solr:[原因:找不到404错误]

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

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

警告:这将在连接“默认”中将搜索索引中的所有内容删除。
之后的选择是通过rebuild_index命令从备份中恢复或重建。
您确定要继续吗? [Y/N]Ÿ

然后,它失败:

从索引中删除所有文件,因为你这么说。
无法清除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)。

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

UPDATE
虽然我解决了这个问题,有更多的惊喜,这是使用Solr的(v.4.7.0)代替所有固定由,因为Django的草垛是没有准备好Solr的5(有与此相关的一个问题,但我再也找不到它github

回答

4

钍指定核心请键入user366722以建议在设置中指定核心。但是,我忽略了一个更基本的步骤创建的核心!

解决方案:
创建芯,指定所述芯的名称(例如,“默认”)和端口(例如8983):

$bin/solr create_core -c default -p 8983

然后,只需在您的草垛URL设置指定的核心(例如 '默认')的名称:

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

完成!

现在,我得到

删除所有文件从你的索引,因为你这么说。
删除所有文件。
索引3层

UPDATE
在写作的时候,我也切换到SOLR 4.7.0,使其工作,如大海捞针还没有准备好Solr的5.x的

+0

bin/solr create_core -c default -p 8983 你能告诉我哪个bin?!谢谢 – 2016-08-29 14:29:24

+0

哪个bin取决于你安装的位置 – ZG101 2017-06-04 00:22:27

1

有同样的问题,并找到了答案:https://stackoverflow.com/a/29833997/366722 你需要在URL

+0

你使用的是哪个版本的solr?显然[solr.xml文件的结构已经改变](https://wiki.apache.org/solr/Solr.xml%204.4%20and%20beyond):“简而言之,[从solr v5.0开始] 已被自动发现内核所取代。“当时我放弃了,我不确定django-haystack是否能够为solr的v5生成兼容的solr.xml文件(即没有0​​)。 – ZG101 2015-04-23 23:44:08

+0

这是正确的。我正在使用5.1.0并使用一个使用4.x的干草堆旧文档进行设置。 – siavach 2015-04-24 15:17:26

相关问题