同义词文件加了「手机,电话」,重启节点后 _analyze 输出里还是只有一个词,搜「电话」依旧 0 条。配置里 synonyms_path 写的是相对路径,节点日志没有报错。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,synonyms_path 相对配置目录解析,写相对路径时每个节点找到的位置可能不同。词典在分析器第一次使用时加载,改文件不重启不会重读;重启了路径不对,读的还是旧文件。已经写入的词条不会因为词典变化自动重写。
「同义词词典热更新」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
GET products/_analyze
{"analyzer": "ik_synonym", "text": "电话"}
具体做法是,把路径改成绝对路径 确认每个节点上文件内容一致;用 _analyze 指定 analyzer 直接看切词结果 别靠搜索验证;确认同义词格式是逗号分隔且没有多余空格;历史数据要重建索引 新词典只影响新写入。
最后用这个标准收尾,_analyze 返回的 tokens 里同时出现「电话」和「手机」,搜两个词命中数一致。
