阿里云Elasticsearch Serverless(简称ES Serverless)应用中默认安装elasticsearch-analysis-dynamic-synonym插件,该插件支持动态加载同义词文件,本文介绍如何在ES Serverless应用中实现同义词动态更新。
操作步骤
同义词文件准备。
准备一个UTF-8编码格式的同义词TXT文件,并将同义词文件放在OSS中。同义词文件中的内容如下:
西红柿,番茄,小西红柿,tomato 土豆,马铃薯,洋芋,potato 肯德基,KFC
登录阿里云ES Serverless应用的Kibana控制台。
具体操作,请参见通过Kibana使用Serverless应用。
在Kibana控制台,单击,选择
。在Console页签中,执行以下命令,创建索引并配置settings,在filter下调用
dynamic_synonym
接口,通过synonyms_path
实现远程词典加载。# 创建索引时需要配置settings和mapping # 用户在filter下调用dynamic_synonym,通过synonyms_path实现远程词典加载 PUT /test { "settings": { "index": { "analysis": { "analyzer": { "my_analyzer": { "type": "custom", "tokenizer": "ik_smart", "filter": ["remote_synonym"] } }, "filter": { "remote_synonym" : { "type" : "dynamic_synonym", "synonyms_path" : "https://****/synonym.txt", "interval": 30 } } } } }, "mappings": { "properties": { "title": { "type": "text", "analyzer": "my_analyzer" } } } }
filter中的参数说明如下,更多参数说明请参见Dynamic Synonym for ElasticSearch。
参数
说明
type
词典文件类型,支持dynamic_synonym和dynamic_synonym_graph类型。
synonyms_path
词典配置文件路径或URL。直接获取OSS中同义词文件的url,获取方式请参见私有文件。
说明建议存储词典文件的OSS与Serverless应用在同一地域。
interval
刷新词典的时间间隔,默认:60,单位为秒。
验证同义词配置。
通过
_analyze
获取KFC
分词效果。# 验证同义词配置 GET test/_analyze { "analyzer": "my_analyzer", "text": "KFC" }
执行成功后,返回结果如下。
# 返回结果 { "tokens" : [ { "token" : "肯德基", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "kfc", "start_offset" : 0, "end_offset" : 3, "type" : "ENGLISH", "position" : 0 } ] }
在OSS同义词文件中更新词典内容。
同义词文件中的内容如下:
西红柿,番茄,小西红柿,tomato 土豆,马铃薯,洋芋,potato 肯德基,KFC,Kentucky Fried Chicken
在Kibana中执行以下代码,验证分词效果。
# 验证同义词配置 GET test/_analyze { "analyzer": "my_analyzer", "text": "KFC" }
执行成功后,返回结果如下。
{ "tokens" : [ { "token" : "kfc", "start_offset" : 0, "end_offset" : 3, "type" : "ENGLISH", "position" : 0 }, { "token" : "肯德基", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "kentucky", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 }, { "token" : "fried", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 1 }, { "token" : "chicken", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 2 } ] }
常见问题
Q:动态同义词地址出错,如何处理?
A:请根据以下步骤处理。
验证配置参数:
检查您的索引映射(mapping)或分析器设置(analyzer settings),确保synonym_path等插件相关参数被正确配置。
检查同义词文件的编码方式是否为UTF-8。
确认同义词地址设置:
检查您的插件配置,确保指向存储同义词文件的地址(阿里云对象存储服务OSS的URL)正确。提供的同义词地址应正确无误,且文件可访问。同义词词典文件在OSS中,获取该文件的URL,请参见私有文件。
联系技术支持:
若自行排查后问题仍未解决,或者不确定如何在阿里云ES Serverless环境中操作,请提交工单联系阿里云技术支持,提供详细的错误信息和已采取的排查步骤,阿里云技术支持将为您提供针对性的帮助。