elasticsearch 版本 7.3
安装同义词插件
插件对应的版本需要和elasticsearch的版本一致
插件下载地址
https://github.com/bells/elasticsearch-analysis-dynamic-synonym
安装步骤如下:
- 在elasticsearch-7.3.0/plugins目录下新建 analysis-dynamic-synonym文件夹
- 如果是最新版master需要使用maven编译后将jar放入刚刚建好的文件夹中,如果是其他已经编译好的版本直接复制放入即可,本例需要编译的版本
- 同时加入plugin-descriptor.properties 和 plugin-security.policy,内容详见下文
- 重启集群
远程同义词库同样是根据http header 中的 Last-Modified 和 ETag 判断是否需要更新,具体可以参考我的另一篇博客方法是一样的elasticsearch 中文分词插件IK-Analyze
编译后仅得到一个jar包,其实elasticsearch安装插件还需要配置文件plugin-descriptor.properties,没有此文件会报错,文件内容如下
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报错提示
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
}
]
}
来源:oschina
链接:https://my.oschina.net/u/2902377/blog/3119316