违规帖子已删除,站内搜索标题还能搜到,点进去是 404,搜索摘要里仍显示违规文字。日志里能对上时间点,这种反而好排。
删除只改了数据库,搜索引擎的索引没有同步删除,重建任务每天凌晨才跑一次。搜索摘要取自索引里的副本。这一点先确认清楚,后面就不用反复试。
curl -X DELETE 'http://search:9200/posts/_doc/8821' curl -s 'http://search:9200/posts/_search?q=title:违规词'
「删除后索引残留」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:删除时同步调用索引删除接口;索引任务加对账,扫描库里不存在但索引里有的 ID;删除后立刻搜一次标题,确认结果为空。
结果对不对很好判断,站内搜索该标题返回 0 条结果,摘要不再出现违规文字。
