【问题标题】:Update haystack index on record deletion without re-indexing entire database删除记录时更新 haystack 索引,无需重新索引整个数据库
【发布时间】:2014-03-06 05:26:32
【问题描述】:

是否可以在不重新索引整个数据库的情况下更新整个 haystack 索引?我有一个包含 260 万条记录的数据库,每条记录都有相关表。如果我跑:

 python manage.py update_index --remove

我必须等待几天才能完成索引,而实际上可能只有一两条记录需要重新索引。有什么解决办法吗?

更新: 正如 Bennylope 所说,我可以使用 get_updated_field 仅索引新条目。如果我删除一条记录,并且只希望从索引中删除该项目,则会出现问题。我该怎么做?

【问题讨论】:

标签: python elasticsearch django-haystack


【解决方案1】:

两个建议:在您的主记录中添加一个修改时间戳,并在您的SearchIndex 中使用get_updated_field 字段方法,在执行management command 时使用--age 标志按更新的新近过滤查询集。

第二种方法是实现实时或queued indexing,以便在单个记录更新时对其进行索引。

【讨论】:

  • 查看问题中的更新。如果我删除一条记录,并且只希望从索引中删除该项目,则会出现问题。我该怎么做?
  • 我认为实时或排队选项将是要走的路。
  • 我真正想要的是一种只从索引中删除已删除条目的方法。你有一些我可以使用的示例代码吗?我在让 remove_object 和 should_update 工作时遇到了很大的麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
  • 2021-11-07
相关资源
最近更新 更多