Haystack-Elasticsearch更新特定记录

时间:2018-07-22 08:55:25

标签: elasticsearch indexing django-haystack

我有一个数据库,当前有100条记录被分类为“草稿”和“公共”。我的干草堆索引相关功能是:

def read_queryset(self, using=None):
    return self.get_model().objects.filter(storage__status='public')

def index_queryset(self, using=None):
    return self.read_queryset()

仅索引“公共”记录。

因此,我的第一个要求是仅在通过模型管理员执行“公开”操作(因为'public''draft'是在相关模型存储中指定的,因此 RealtimeSignalProcessor 不会执行此操作):

def make_public_action(self, request, queryset):
     update_index.Command().handle()

并类似地,使用

从索引中删除
def make_draft_action(self, request, queryset):
     update_index.Command().handle(remove=True)

但是,这种对 update_index.Command()。handle()的调用似乎并不可行...

真正的问题是当我想对“公共”模型进行更改时,再次使用 update_index.Command()。handle()在模型save()方法中似乎很合理, (如果该记录的状态为“公开”)。但这会导致所有 public 记录的整个索引都被更新,而只有已更改的记录应被更新。我认为当数据库获取数千条“公共”记录并且每次对模型进行更改(字段值或未发布)时,索引都会全部更新时,这将变得一团糟。

有什么办法可以解决这个问题,我认为这应该是干草堆的主要功能?

谢谢

0 个答案:

没有答案