elasticsearch 版本 7.3java
安装同义词插件git
插件对应的版本须要和elasticsearch的版本一致github
插件下载地址app
https://github.com/bells/elasticsearch-analysis-dynamic-synonymelasticsearch
安装步骤以下:maven
远程同义词库一样是根据http header 中的 Last-Modified 和 ETag 判断是否须要更新,具体能够参考个人另外一篇博客方法是同样的elasticsearch 中文分词插件IK-Analyze测试
编译后仅获得一个jar包,其实elasticsearch安装插件还须要配置文件plugin-descriptor.properties,没有此文件会报错,文件内容以下.net
description=Analysis-plugin for synonym version=5.1.1 name=analysis-dynamic-synonym classname=com.bellszhu.elasticsearch.plugin.DynamicSynonymPlugin java.version=1.8 elasticsearch.version=7.3.0
还须要放入配置文件 plugin-security.policy插件
grant { // needed because of the hot reload functionality permission java.net.SocketPermission "*", "connect,resolve"; };
若是elasticsearch报错提示code
failed to get synonyms : http://10.0.11.1:10002/elasticsearch/synonymDict
access denied ("java.net.SocketPermission" "10.0.11.1:10002" "connect,resolve")
缘由是缺乏plugin-security.policy文件
commons httpclient 这些jar能够下载一个低版本的插件从中获取
插件全部文件以下:
测试同义词插件
建立一个索引,指定远程同义词库
PUT /full_text_test123 { "settings": { "index": { "analysis": { "analyzer": { "ik_syno_smart": { "tokenizer": "ik_max_word", "type": "custom", "filter": [ "remote_synonym" ] } }, "filter": { "remote_synonym": { "type": "dynamic_synonym", "synonyms_path": "http://10.0.11.1:10002/elasticsearch/synonymDict", "interval": 30 } } } } }, "mappings": { "properties": { "content": { "type": "text", "analyzer": "ik_syno_smart", "search_analyzer": "ik_smart" } } } }
添加同义词
执行解析器
POST /full_text_test123/_analyze { "text": ["西红柿"], "analyzer": "ik_syno_smart" }
结果
{ "tokens" : [ { "token" : "西红柿", "start_offset" : 0, "end_offset" : 3, "type" : "CN_WORD", "position" : 0 }, { "token" : "番茄", "start_offset" : 0, "end_offset" : 3, "type" : "SYNONYM", "position" : 0 } ] }