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"
      }
    }
  }
}
相关推荐
LJ97951111 小时前
告别发布焦虑:用AI开启“轻量化”精准媒体沟通时代
大数据·人工智能
杰拉拉德2 小时前
Spring AI + Elasticsearch:语义/关键字/混合检索与知识问答
elasticsearch·知识库·rag·spring ai·混合检索·语义检索·关键字检索
未定义.2212 小时前
第5篇:进阶优化:数据驱动+日志体系+失败重试实战
python·ui·自动化·jenkins·集成测试·pytest
AI营销实验室2 小时前
原圈科技AI CRM系统深度解析:告别单点智能,构建AI协同作战体系
大数据·人工智能
武子康2 小时前
大数据-214 K-Means 聚类实战:自写算法验证 + sklearn KMeans 参数/labels_/fit_predict 速通
大数据·后端·机器学习
说私域2 小时前
用户感知断裂与商业模式颠覆:AI智能名片链动2+1模式S2B2C商城小程序的破局之道
大数据·人工智能·小程序
Gofarlic_OMS2 小时前
MATLAB许可证闲置自动检测与智能提醒
java·大数据·运维·开发语言·人工智能·算法·matlab
智算菩萨2 小时前
深度剖析Claude Haiku 4.5:近前沿性能与成本效益的完美融合——探索AI模型民主化的新纪元(开头有国内合法镜像站使用入口)
大数据·人工智能