elasticsearch7.13.4(7.X版本)使用RealtimeSignalProcessor进行删除时,索引_doc文档不会同步删除的解决办法
环境
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了?有知道的朋友希望可以告诉我一下