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

Azure托管Elastic Cloud中如何维护多份同义词文件作为token filter

在Azure托管Elastic Cloud Service中为索引配置多份同义词文件作为Token Filter

步骤1:准备同义词文件

按Elasticsearch标准格式准备同义词文件,比如synonyms_brand.txt、synonyms_category.txt,每行定义一组同义词:

# synonyms_brand.txt
apple, iphone, macbook
google, pixel, android

# synonyms_category.txt
laptop, notebook
smartphone, mobile phone

步骤2:上传同义词文件到集群

Azure托管的Elastic Cloud操作逻辑与原生Elastic Cloud一致,可通过Kibana Dev Tools或curl命令上传:

用Kibana Dev Tools上传

PUT _synonyms/synonyms_brand.txt
{
  "synonyms": [
    "apple, iphone, macbook",
    "google, pixel, android"
  ]
}

PUT _synonyms/synonyms_category.txt
{
  "synonyms": [
    "laptop, notebook",
    "smartphone, mobile phone"
  ]
}

用curl命令上传本地文件

# 替换为你的集群地址、认证信息和本地文件路径
curl -X PUT "https://your-elastic-cluster.azure.elastic-cloud.com/_synonyms/synonyms_brand.txt?pretty" \
  -u "username:password" \
  -H "Content-Type: text/plain" \
  --data-binary @./synonyms_brand.txt

步骤3:配置索引的分词器与同义词Filter

创建新索引或更新已有索引的设置,在analysis.filter中定义多个同义词Filter,分别绑定不同的同义词文件:

创建新索引

PUT /product_catalog
{
  "settings": {
    "analysis": {
      "filter": {
        "synonym_brand": {
          "type": "synonym",
          "synonyms_path": "_synonyms/synonyms_brand.txt"
        },
        "synonym_category": {
          "type": "synonym",
          "synonyms_path": "_synonyms/synonyms_category.txt"
        }
      },
      "analyzer": {
        "product_search_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "synonym_brand",
            "synonym_category"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "product_name": {
        "type": "text",
        "analyzer": "product_search_analyzer"
      }
    }
  }
}

更新已有索引

已有索引需先关闭,更新设置后再重新打开:

# 关闭索引
POST /product_catalog/_close

# 更新分词器配置
PUT /product_catalog/_settings
{
  "analysis": {
    "filter": {
      "synonym_brand": {
        "type": "synonym",
        "synonyms_path": "_synonyms/synonyms_brand.txt"
      },
      "synonym_category": {
        "type": "synonym",
        "synonyms_path": "_synonyms/synonyms_category.txt"
      }
    },
    "analyzer": {
      "product_search_analyzer": {
        "tokenizer": "standard",
        "filter": [
          "lowercase",
          "synonym_brand",
          "synonym_category"
        ]
      }
    }
  }
}

# 重新打开索引
POST /product_catalog/_open

步骤4:验证同义词效果

用_analyze API测试分词器是否生效:

POST /product_catalog/_analyze
{
  "analyzer": "product_search_analyzer",
  "text": "iphone"
}

返回结果中应包含apple、macbook等同义词token。

关键注意事项

  • 同义词文件必须存储在_synonyms/路径下,这是Elastic Cloud托管环境的专用全局路径,所有索引均可引用。
  • 修改同义词文件后,无需重启索引,调用重载API即可生效:
    POST _synonyms/synonyms_brand.txt/_reload
    
  • 确保文件名唯一,避免不同业务的同义词文件冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:50:44