配置OpenSearch集群简繁体转换搜索
本文介绍如何在Elasticsearch集群实现搜索数据的简繁体转换。
场景介绍
简繁体转换插件是一款可以使中文简体和中文繁体相互转换的插件。通过该插件的转换,用户可以使用中文繁体关键字搜索出包含对应中文简体的索引数据,也可以使用中文简体关键字搜索出包含对应中文繁体的索引数据。
云搜索服务默认安装了简繁体转换插件,用户无需自行安装。
简繁体转换插件通常可以当做analyzer、tokenizer、token-filter或char-filter来使用。
简繁体转换插件的转换类型包含如下两种:
- s2t:将中文简体转换为中文繁体。
- t2s:将中文繁体转换为中文简体。
配置简繁体转换搜索
- 登录云搜索服务管理控制台。
- 在左侧导航栏中,选择“集群管理”,进入集群列表页面。
- 在集群列表中,单击需要使用的集群对应“操作”列的“Kibana”。
如果开启了安全模式,需要输入创建集群时设置的管理员账户名和密码。
- 在Kibana的左侧导航中选择“Dev Tools”,进入Console界面。
- 在Console界面,执行如下命令,创建索引“stconvert”,并指定自定义映射来定义数据类型。
Elasticsearch低于7.x版本的代码示例
PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "type": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } } }
Elasticsearch大于或等于7.x版本和OpenSearch集群的代码示例
PUT /stconvert { "settings": { "number_of_shards": 1, "number_of_replicas": 0, "analysis": { "analyzer": { "ts_ik": { "tokenizer": "ik_smart", "char_filter": [ "tsconvert", "stconvert" ] } }, "char_filter": { "tsconvert": { "type": "stconvert", "convert_type": "t2s" }, "stconvert": { "type": "stconvert", "convert_type": "s2t" } } } }, "mappings": { "properties": { "desc": { "type": "text", "analyzer": "ts_ik" } } } }
返回结果如下所示。
{ "acknowledged" : true, "shards_acknowledged" : true, "index" : "stconvert" }
- 在Console界面,执行如下命令,导入数据到“stconvert”索引中。
Elasticsearch低于7.x版本的代码示例
POST /stconvert/type/1 { "desc": "國際電視臺" }
Elasticsearch大于或等于7.x版本和OpenSearch集群的代码示例
POST /stconvert/_doc/1 { "desc": "國際電視臺" }
当返回结果信息中“failed”字段的值为“0”时,表示数据导入成功。
- 在Console界面,执行如下命令,搜索关键字“国际”,并查看搜索结果。
GET /stconvert/_search { "query": { "match": { "desc": "国际" } } }
搜索结果如下所示。
{ "took" : 15, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 0.5753642, "hits" : [ { "_index" : "stconvert", "_type" : "type", "_id" : "1", "_score" : 0.5753642, "_source" : { "desc" : "國際電視臺" } } ] } }