如何将Django-Haystack中的SearchSite从1.X迁移到2.X?

时间:2014-11-03 16:34:48

标签: python django django-haystack

所以我一直在阅读the migration docs并且我被困在

  

•删除SearchSite& haystack.site。
•删除   handle_registrations&自动发现。
•添加多个   索引支持。
•添加SignalProcessors&删除   RealTimeSearchIndex。
•删除/重命名各种   设置。

因为,"删除RealTimeSearchIndex"虽然描述了如何取代autodiscoverSearchSite我无法在那里找到。有谁知道在哪里看/做什么?我一直坚持如何主要迁移SearchSite

2 个答案:

答案 0 :(得分:0)

我必须在某些网站迁移,我总是按照以下步骤进行迁移:

请记住使用备份,快照或任何其他方式保存索引或索引

  1. 卸载 ElasticSearch
  2. 卸载 default-jre-headless (如果安装了它,最好更新java)
  3. 卸载 pyelasticsearch django-haystack
  4. 安装 openjdk-7-jre-headless
  5. 安装新的 elasticsearch (我使用1.3.4)。
  6. 使用 django-haystack == 2.3.0 pyelasticsearch == 0.7.1 elasticsearch == 1.2进行安装0.0
  7. 通常我安装了openjdk-6-jre-headless并将其更新为openjdk-7-jre-headless

    通过这6个步骤,我将许多项目更新为 Haystack 2.3.0

    您可以尝试使用其他软件版本,我已经使用过这些版本并且工作正常

答案 1 :(得分:0)

在另一个问题中查看我的警告......

我不确定是否有一个简单的自动发现替换来保存输入。您可能只需列出所有搜索索引类及其感兴趣的字段,而不是让干草堆淹没您的所有模型。

迁移文档说index.Indexable是一个你需要添加/继承的mixin类。它应该基本上只是将类标记为haystack应该关心的东西。这应该基本上取代在模型上显式调用register。您还需要在搜索索引类上使用get_model方法 - 我相信这会将它们与您正在搞乱的任何django模型联系起来。 index_queryset方法似乎不是基于文档(http://django-haystack.readthedocs.org/en/latest/searchindex_api.html#index-queryset)所必需的,但可能会引起兴趣,具体取决于重新索引事物时“整个”数据集对您的意义。 HTH。