关于es7.6同义词的内容真的好难找…………
现在简单记录一下实现过程
1、安装同义词插件
插件下载传送,其他的同义词插件未测试
2、插件使用mvn打包(最新版master没有打包), 使用maven编译插件
打包提示 需要修改 elasticsearch-analysis-dynamic-synonym-master 文件下的 pom.xml文件,
把版本改为自己es对应的版本号,然后进行打包操作
3、按照打包处理,然后把 elasticsearch-analysis-dynamic-synonym-master\target\releases 的文件 解压 添加到 elasticsearch/plugins/synonym 文件夹synonym 自己新建
4、添加同义词词库
在 es 的 config 新建 analysis 文件夹,新建 synonyms.txt 文件(文件名自己定只要统一就可以), 一定要是UTF-8格式。 有几种格式自己选择
synonyms.txt文件测试词
西红柿,番茄=>圣女果
哪儿,在哪,何处,什么地方=>哪里
状况,情况=>状态
注解,注释=>备注
universe,cosmos
5、启动es(如果已经启动,需要重启,否则不能加载同义词词典)
6、重新设置分词器
1)关闭所有索引 通过 (postman、curl)post 请求 localhost:9200/_all/_close
2)设置索引 通过 (postman、curl)使用put请求
接口地址:
http://localhost:9200/_all/_settings?preserve_existing=true
参数:
{
"index.analysis.analyzer.ik_syno_max_word.filter" : [
"my_synonym_filter"
],
"index.analysis.analyzer.ik_syno_max_word.tokenizer" : "ik_max_word",
"index.analysis.analyzer.ik_syno_max_word.type" : "custom",
"index.analysis.analyzer.ik_syno_smart.filter" : [
"my_synonym_filter"
],
"index.analysis.analyzer.ik_syno_smart.tokenizer" : "ik_smart",
"index.analysis.analyzer.ik_syno_smart.type" : "custom",
"index.analysis.filter.my_synonym_filter.synonyms_path" : "analysis/synonyms.txt",
"index.analysis.filter.my_synonym_filter.type" : "synonym"
}
返回值
{
"acknowledged": true
}
curl示例
curl -XPUT 'http://localhost:9200/_all/_settings?preserve_existing=true' -d '{
"index.analysis.analyzer.ik_syno_max_word.filter" : [
"my_synonym_filter"
],
"index.analysis.analyzer.ik_syno_max_word.tokenizer" : "ik_max_word",
"index.analysis.analyzer.ik_syno_max_word.type" : "custom",
"index.analysis.analyzer.ik_syno_smart.filter" : [
"my_synonym_filter"
],
"index.analysis.analyzer.ik_syno_smart.tokenizer" : "ik_smart",
"index.analysis.analyzer.ik_syno_smart.type" : "custom",
"index.analysis.filter.my_synonym_filter.synonyms_path" : "analysis/synonym.txt",
"index.analysis.filter.my_synonym_filter.type" : "synonym"
}'
3)重新打开所有索引, 通过 (postman、curl)使用 post请求
localhost:9200/_all/_open
返回值:
{
"acknowledged": true,
"shards_acknowledged": true
}
7、测试同义词
接口地址:
http://localhost:9200/_index/_analyze _index 为自己使用了同义词的 mapping
参数:
{
"analyzer": "ik_syno_smart",
"text": "cosmos"
}
返回值:
{
"tokens": [
{
"token": "cosmos",
"start_offset": 0,
"end_offset": 6,
"type": "ENGLISH",
"position": 0
},
{
"token": "universe",
"start_offset": 0,
"end_offset": 6,
"type": "SYNONYM",
"position": 0
}
]
}
以上,完结。
来源:oschina
链接:https://my.oschina.net/u/3268486/blog/4478322