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"
      }
    }
  }
}
相关推荐
莫逸风6 小时前
【AgentScope】HarnessAgent 学习指南
大数据·人工智能
武子康6 小时前
调查研究-153 Cloudflare 能部署网站吗?2026 年完整对比 Vercel / Netlify / 自建服务器
大数据·运维·服务器·人工智能·部署·devops·opc
Zldaisy3d6 小时前
物理测试不是唯一方式!增材制造零部件认证路径正在悄悄改变
大数据·服务器·制造
志栋智能7 小时前
超自动化安全:构建智能安全运营的神经系统
大数据·运维·网络·人工智能·安全·自动化
2601_959986248 小时前
M4Markets:把信息透明度做到位——路径分析与提示整理
大数据·人工智能
追巨8 小时前
单节点elasticsearch安装笔记
大数据·elasticsearch·jenkins
夜郎king8 小时前
告别低效单篇创作,CSDN AI 批量生成工具深度体验
大数据·人工智能·csdn ai 数字营销
鱼锦0.08 小时前
Coreseek和Elasticsearch 有什么区别
大数据·elasticsearch·jenkins
STDD8 小时前
VictoriaLogs:轻量级日志存储方案,Loki 的高效替代
运维·jenkins
王莎莎-MinerU9 小时前
Agent 时代,科学数据 API 需要重新设计
大数据·前端·数据库·人工智能·个人开发