Elastic Cloud更新synonyms.txt后如何通过API让同义词配置生效?
Elastic Cloud 同义词文件更新后不生效解决方案
你调用的/deployments/:deployment_id/elasticsearch/:ref_id/_restart接口仅会重启现有Elasticsearch进程,不会触发节点重新拉取最新版本的自定义扩展包,因此就算你已经通过Extensions API上传了新的synonyms.txt,节点本地的文件依旧是旧版本,重启后自然不会加载新同义词。
程序化更新完整步骤
- 第一步:通过Extensions API上传包含新版
elasticsearch/dictionaries/synonyms.txt的zip包,记录返回的新版本扩展ID - 第二步:调用部署更新API,更新部署关联的同义词扩展版本,请求示例如下:
PATCH /deployments/{你的部署ID} { "resources": { "elasticsearch": [ { "ref_id": "你的ES实例ref_id", "extensions": [ { "id": "你的同义词扩展ID", "version": "刚上传的扩展新版本号" } ] } ] } }
注意:如果你的部署关联了多个自定义扩展,请求体的
extensions数组需要包含所有需要保留的扩展,仅填写同义词扩展会导致其他扩展被解绑。
- 第三步:等待API执行完成,Elastic Cloud控制平面会自动触发集群滚动更新,逐个重启节点,每个节点启动时会自动拉取最新的扩展包,替换本地旧的同义词文件
- 第四步(可选,无需重启节点加载):如果你的同义词过滤器已经配置了
updateable: true,在所有节点的同义词文件更新完成后,可以直接调用索引搜索分析器重载API,无需重建索引即可让新同义词生效:
POST /synonym_test/_reload_search_analyzers
上述所有操作都可以通过API完成,不需要登录UI手动操作。
内容的提问来源于stack exchange,提问作者BravoZulu
相关产品推荐
相关产品推荐

