elasticsearch7.13.4(7.X版本)使用RealtimeSignalProcessor进行删除时,索引_doc文档不会同步删除的解决办法

发布时间 2023-05-04 17:46:40作者: Z哎呀

环境

django==3.8.18
elasticsearch==7.13.4
drf-haystack==1.8.11
django-haystack==3.2.1

原因

django-haystack如果没有指定HAYSTACK_IDENTIFIER_METHOD,默认使用<app.label>.<object_name>.<pk>作为id进行删除,而大部分生成文档时都是默认使用纯数字作为id。

解决方法

将删除id改为自定义的数字id,在settings.py中配置:

get_identifier = lambda obj: obj.id
HAYSTACK_IDENTIFIER_METHOD = '你的项目名称.settings.get_identifier'

PS:全网几乎没搜到该问题的答案,还是自己通过全面分析了django-haystack源码才发现的,不知道是大家都没遇到还是都去用java了?有知道的朋友希望可以告诉我一下