Elasticsearch同义词配置全攻略

配置方式

自定义检索分析器

  1. 在索引settings中自定义带同义词功能 的分析器,其中,filter中synonyms_setsynonymssynonyms_path根据同义词集配置方式不同,三选一
  2. 在mappings中使用自定义的分析器
  • 完整的settings配置
json 复制代码
{
  "settings": {
    "index": {
      "analysis": {
        "filter": {
          "synonym_filter": {
            "ignore_case": "true",
            "updateable": "true",
            "type": "synonym_graph",
            "synonyms_set": "xxxx",
            "synonyms": "xxxx",
            "synonyms_path":"xxxx"
          }
        },
        "analyzer": {
          "index_analyzer": {
            "filter": [
              "lowercase"
            ],
            "type": "custom",
            "tokenizer": "ik_max_word"
          },
          "search_analyzer": {
            "filter": [
              "synonym_filter",
              "lowercase"
            ],
            "type": "custom",
            "tokenizer": "ik_max_word"
          }
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword"
          }
        },
        "analyzer": "index_analyzer",
        "search_analyzer": "search_analyzer"
      }
    }
  }
}

三种设置同义词方式

  • 首先定义一个同义词分析器,支持三种设置同义词的方式:内联同义词列表、引用外部同义词文件和同义词API(Elasticsearch7.x 以上新增API)
配置方式 核心描述 适用场景与注意事项
1. 内联同义词列表 在创建索引或分析器的设置时,直接在 synonyms 参数中以数组形式列出同义词规则。 快速验证和少量同义词 。规则变更需要关闭索引并重建,不适合大规模或频繁更新。
2. 引用外部同义词文件 通过 synonyms_path 参数指向一个存放在每个ES节点本地磁盘上的文本文件。 同义词规则较多 时更便于管理。文件更新后,可通过 _reload_search_analyzers API 重载,无需重启索引
3. 同义词 API (官方推荐方式) 使用专用的 _synonyms API 创建和管理一个独立的同义词集 ,在分析器中通过 synonyms_set 引用。 Elasticsearch 8.x 的现代化方式 。提供集中的、可动态更新的同义词管理,无需接触节点本地文件,尤其适用于云环境或容器化部署
内联同义词列表
json 复制代码
{
  "analysis": {
    "filter": {
      "synonym_filter": {
        "ignore_case": "true",
        "type": "synonym",
        "updateable": "true",
        "synonyms": [
          "手机,移动电话,IPhone",
          "耳机,蓝牙耳机,耳麦"
        ]
      }
    }
  }
}
引用外部同义词文件
  • 支持2中引入方式,即本地文件和远程API文件(需要安装插件)
  • 本地文件修改后,不可直接生效,需要重新加载索引
本地文件
json 复制代码
{
  "analysis": {
    "filter": {
      "synonym_filter": {
        "ignore_case": "true",
        "type": "synonym",
        "updateable": "true",
        "synonyms_path": "/usr/share/elasticsearch/data/synonym/custom_synonym_set.txt"
      }
    }
  }
}
重新加载索引
  1. 关闭索引:GET <index_name>/_close
  2. 打开索引:GET <index_name>/_open
远程文件
  • 需要安装插件,安装方式
shell 复制代码
bin/elasticsearch-plugin install https://github.com/jprante/elasticsearch-analysis-url/releases/download/7.10.2/analysis-url-7.10.2-plugin.zip
同义词API
同义词集管理
添加同义词集
  • API
  • 请求方式:PUT
  • URI: _synonyms/自定义数据集名称,例如:自定义数据集名称为:custom_synonyms_set
  • 请求参数:
json 复制代码
{
    "synonyms_set": [
        {
            "id": "1",
            "synonyms": "手机,移动电话,IPhone"
        },
        {
            "id": "2",
            "synonyms": "耳机,蓝牙耳机,耳麦"
        }
    ]
}
查询同义词集
  • API
  • 请求方式:GET
  • URI: _synonyms/自定义数据集名称,例如:自定义数据集名称为:custom_synonyms_set
  • 更新方式为全量更新,不能增量更新。更新后,可立即生效
删除同义词集
  • API
  • 请求方式:DELETE
  • URI: _synonyms/自定义数据集名称,例如:自定义数据集名称为:custom_synonyms_set
  • 如果同义词集有被其他索引引用,则会删除失败。所以无需担心误删情况
使用自定义的同义词集
  • custom_synonyms_set为自定义的同义词集
json 复制代码
{
  "analysis": {
    "filter": {
      "synonym_filter": {
        "ignore_case": "true",
        "type": "synonym",
        "updateable": "true",
        "synonyms_set": "custom_synonyms_set"
      }
    }
  }
}
相关推荐
redaijufeng6 小时前
万象生鲜系统功能介绍
大数据
2601_957780848 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
一只积极向上的小咸鱼9 小时前
嵌套 Git 仓库 / gitlink / submodule 问题总结
大数据·git·elasticsearch
eastyuxiao10 小时前
第二章 数字孪生核心技术体系
大数据·人工智能·数字孪生
andy_haiying11 小时前
深圳网站建设公司推荐哪家好?2026年5月官网制作服务商综合评测
大数据·人工智能
zxrhhm11 小时前
PostgreSQL 大规模随机数据生成完整指南
大数据·数据库·postgresql
飞飞传输12 小时前
数字化科研提速关键 构建安全可控一体化跨网数据传输体系
大数据·运维·安全
Elastic 中国社区官方博客12 小时前
Elastic 的 AI agent skills
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
陕西字符12 小时前
2026 西安小微企业地图与 AI 问答排名优化:专业技术指南与落地方案
大数据·人工智能
阿里云大数据AI技术12 小时前
破解 AI 搜索“效果与成本”双重困境:阿里云 Elasticsearch 向量混合检索最佳实践揭秘
人工智能·elasticsearch