在构建schema.xml时,Websorl返回错误“未知字段'django_ct'”

时间:2019-09-25 08:57:43

标签: django heroku solr django-haystack websolr

我们的网站使用Python 3.6.5和:

  • django == 1.11.20
  • django-haystack == 2.8.1
  • certifi == 0.0.8
  • urllib3 <1.25,> = 1.21.1
  • pysolr == 3.8.1

我用django-haystack(python manage.py build_solr_schema> schema.xml)生成了schema.xml并将其粘贴到websolr(heroku版本)中。

当我运行以下命令时:

heroku run python manage.py rebuild_index --app terradiem

我收到以下错误:

  

无法将文档添加到Solr:Solr响应错误(HTTP 400):[原因:错误:[doc = naturalearth.naturalearthmerged.12001]未知字段'django_ct']

     

回溯(最近通话最近):         更新文件“ /app/.heroku/python/lib/python3.6/site-packages/haystack/backends/solr_backend.py”,第72行       self.conn.add(docs,commit = commit,boost = index.get_field_weights())

     

添加文件“ /app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第918行       overwrite = overwrite,handler = handler)

     

文件_update中的文件“ /app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第500行

     

返回self._send_request('post',path,message,{'Content-type':'text / xml; charset = utf-8'})

     

文件_send_request中的文件“ /app/.heroku/python/lib/python3.6/site-packages/pysolr.py”,第412行           提高SolrError(error_message%(resp.status_code,solr_message))       pysolr.SolrError:Solr响应错误(HTTP 400):[原因:错误:[doc = naturalearth.naturalearthmerged.12001]未知字段'django_ct']

我想它与schema.xml中的以下几行有关:

<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="django_ct" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="django_id" type="string" indexed="true" stored="true" multiValued="false"/>

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

我无法使其与Solr一起使用。

如果对其他人有用,这是我设法让Django和Heroku与django-haystack一起工作的方法:

我改用Heroku Bonsai和ElasticSearch。

版本组合非常复杂,因为Haystack尚不支持Elasticsearch 5.x,6.x或7.x,而用于多个租户的盆景计划仅支持5.4.3 / 6.5.4 / 7.2.0版本

因此,我安装了支持ElasticSearch 5的django-haystack的fork: https://github.com/tehamalab/django-haystack-es

并在Heroku中创建插件,如下所示:

heroku addons:create bonsai:staging -a terradiem --version=5.6.16

现在一切都很好。