网站群搜索突然搜不到内容,不是没数据,是索引“睡死”了
发布日期:
2026-07-13 11:14:08
编辑们总抱怨后台搜索不好用。明明文章已经发布了,在搜索框里输标题却搜不到。我一开始以为是权限问题,查了半天,不是。又怀疑是关键词太偏,试了“的”“了”这种常见字,也搜不到。这就诡异了。我进服务器看搜索服务的日志,发现Elasticsearch(网站群用的这个做搜索)的索引状态是“red”。这意味着有分片损坏,数据没法正常读取。
我试着重启搜索服务,没用。又查磁盘空间,还剩20%,应该够用。后来在技术群里问了一嘴,有个老哥说:“你看看是不是最近删过大量文章?”我想起来了,上周清理了一批过期新闻,一次性删了上千条。网站群的搜索索引是异步更新的,大量删除导致索引碎片堆积,最终崩溃。解决办法倒不难,重建索引就行。但问题是,重建索引需要锁表,期间所有站点的搜索功能都得停掉。我挑了个凌晨两点开工,先暂停了所有站点的写入操作,然后执行重建命令。
看着进度条一点点挪动,我守在屏幕前不敢离开。中间有一次服务器负载飙到10以上,我吓得赶紧停掉,等负载降下来再继续。整个过程花了三个小时,天都快亮了。重建完,搜索恢复正常。但我发现,新发布的文章还是搜不到。原来是索引重建后,实时同步的开关被关掉了,需要手动开启。我又折腾了半小时。最崩溃的是,第二天早上,有个编辑说搜索结果排序不对,最新的文章排在了最后面。我查了配置,发现索引重建后,排序权重被重置成了默认设置,我得重新调整。
现在每次清理大量数据,我都会提前把搜索索引备份,并且盯着重建进度。同事问我为什么总在半夜干活,我苦笑:因为白天搜不到东西,电话会被打爆;半夜搜不到,至少能安静地修完。哦对了,那晚我咖啡喝多了,第二天手抖得像帕金森,连鼠标都点不准。现在我听到“搜索”这两个字,第一反应是摸胸口,确认心脏还在跳动。
上一新闻:换域名后网站群站内链接全瞎了?