You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将synonym.txt同义词文件上传至Elastic Search?

Elasticsearch 同义词文件配置/上传完整步骤

下面是两种常用的同义词配置方案,你可以根据自己的业务场景选择:

方案1:节点本地部署synonym.txt文件(适合同义词固定、更新频率低的场景)

  • 第一步:将你准备好的synonym.txt文件上传到ES集群每一个节点的配置目录下的同义词专用文件夹,默认路径一般是config/analysis/,如果没有这个文件夹先手动创建,注意要保证ES运行用户对这个文件有读权限。
  • 第二步:重启所有ES节点,让节点能识别到新增的同义词文件。
  • 第三步:创建索引时在设置中指定同义词过滤器,示例配置如下:
{
  "settings": {
    "analysis": {
      "filter": {
        "my_synonym_filter": {
          "type": "synonym",
          "synonyms_path": "analysis/synonym.txt"
        }
      },
      "analyzer": {
        "my_synonym_analyzer": {
          "tokenizer": "ik_max_word",
          "filter": [
            "lowercase",
            "my_synonym_filter"
          ]
        }
      }
    }
  }
}

如果你用的是ES默认标准分词器,把ik_max_word替换成standard即可。

  • 第四步:测试同义词是否生效,执行测试请求:
POST /_analyze
{
  "analyzer": "my_synonym_analyzer",
  "text": "你要测试的关键词"
}

返回的分词结果里如果包含对应同义词,就说明配置成功。

方案2:直接在索引配置中写入同义词规则(适合同义词少、更新频率高,不想操作节点文件的场景)

不需要上传synonym.txt,直接把同义词规则写在过滤器的synonyms参数里即可,示例配置:

{
  "settings": {
    "analysis": {
      "filter": {
        "my_synonym_filter": {
          "type": "synonym",
          "synonyms": [
            "西红柿,番茄",
            "土豆,马铃薯"
          ]
        }
      },
      "analyzer": {
        "my_synonym_analyzer": {
          "tokenizer": "ik_max_word",
          "filter": [
            "lowercase",
            "my_synonym_filter"
          ]
        }
      }
    }
  }
}

注意事项

  • 同义词文件的编码必须是UTF-8,否则会出现乱码导致规则不生效
  • 如果后续更新了synonym.txt文件,需要关闭索引再重新打开才能加载新的规则,执行命令:
POST /你的索引名/_close
POST /你的索引名/_open
  • 集群部署场景下必须保证所有节点的synonym.txt内容完全一致、存储路径也完全一致,否则会出现部分节点分词结果不一致的问题

内容的提问来源于stack exchange,提问作者Meghana S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:03