如何更新django-haystack的单个记录?

时间:2017-06-20 00:35:11

标签: python django elasticsearch django-haystack

我是False初学者,我正试图弄清楚如何更新文档。

我有以下SearchIndex:

haystack

我想在用户添加新产品关键字时更新class ProductIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True) # contains keywords associated with the product name= indexes.CharField(model_attr='name') def get_model(self): return Product def prepare_text(self, obj): return [tag.keyword for tag in obj.productkeywords_set.all()] 字段。我有text条记录,因此使用80k需要很长时间。有没有办法只更新python manage.py update_index文档?

1 个答案:

答案 0 :(得分:1)

您可以使用信号处理器https://django-haystack.readthedocs.io/en/master/signal_processors.html#realtime-realtimesignalprocessor

  

另一个包括SignalProcessor是haystack.signals.RealtimeSignalProcessor类。它是BaseSignalProcessor类的极薄扩展,区别在于实现了setup / teardown方法,将任何Model save / delete绑定到信号处理器。

     

如果模型具有关联的SearchIndex,则RealtimeSignalProcessor将在搜索索引中触发该模型实例的更新/删除。

     

配置如下:

     

HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

     

这会导致所有SearchIndex类以实时方式工作。

通过启用它,您的索引将在模型上的保存/删除时自动更新