我目前正在生产Solr 4.2.0(2012年左右开始)。我已经建立了一个新的开发环境,我升级了所有软件包(Django 1.8.10,PySolr 3.4.0,Haystack 2.4.1)并设置了Solr 5.5.0
我有Solr正在运行,我的核心/集合是用'basic_configs'创建的,它似乎运行良好,除了在索引编制过程中我遇到了很多类似的错误:
All documents removed.
Indexing 9604 contracts
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.22] unknown field 'status']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.70556] unknown field 'date_signed']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.72059] unknown field 'date_signed']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.73458] unknown field 'date_signed']
查看id,似乎大多数文档都很好,但频繁(列表继续)这些错误出现在所有表/索引中。
最终我跟着this promising github project guide,但遗憾的是它并没有为我解决问题。
我的settings.py包含以下条目:
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://localhost:8983/solr/spng',
'DEFAULT_OPERATOR': 'AND',
'INCLUDE_SPELLING': True,
},
}
回应是:
{
"responseHeader":{
"status":0,
"QTime":300}}
如上所述,我最终遇到以下错误:
All documents removed.
Indexing 9604 contracts
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.22] unknown field 'status']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.70556] unknown field 'date_signed']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.72059] unknown field 'date_signed']
Failed to add documents to Solr: Solr responded with an error (HTTP 400): [Reason: ERROR: [d
oc=accounting.contract.73458] unknown field 'date_signed']
有谁知道可能出错了什么?索引在我的生产服务器上正常运行,运行4.2.0。我错过了一个设置还是Solr 5.5.0造成了这些错误?
答案 0 :(得分:4)
特别感谢 elyograg 帮助我解决了Solr的IRC频道(freenode上的#solr)。
elyograg:如果您正在使用来自basic_configs的stock solrconfig.xml,那么您的架构位于名为" managed-schema"的文件中。 - 默认情况下,所有示例配置都使用托管架构,自5.5起。
elyograg:将它(schema.xml内容)放入托管架构中。您可以更改solrconfig.xml,但如果保留默认值,那么试图帮助您的人的生活会更轻松。
换句话说,代替schema.xml,从版本5.5开始,模式文件被称为“托管模式”。使用basic_configs创建集合时(在我的案例中位于/ var / solr / data // conf / managed-schema中)
更新文件并重新加载核心后,索引完成且没有错误。
在未来的版本中要小心,因为 elyograg 也注意到了:
elyograg:添加.xml扩展名也许是一个好主意。我不认为缺少扩展会对手工编辑起到很大的威慑作用。
因此将来它可能被称为managed-schema.xml
答案 1 :(得分:3)
Solr Index Update包含4个步骤:
在search_index.py
通过运行生成架构:
python manage.py build_solr_schema> schema.xml中
通过以下方式更新您的django:
python manage.py update_index
重启服务器。
如果上述所有步骤均已完成且没有任何错误,则表示您的字段已成功更新
答案 2 :(得分:2)
检查
中的模式文件if(User.Identity.IsSignedInWithFacebook())
{
// do what you want
}
并与build_solr_schema中的模式进行比较,以确保solr使用正确的模式