阿里云Elasticsearch Serverless(简称ES Serverless)允许用户上传和管理词库,提供更为灵活高效的检索能力,使得用户能够根据业务需求灵活地自定义和调整分词策略,助力企业级用户构建智能、高性能的搜索与分析系统。
前提条件
已创建检索场景的应用。具体操作,请参见创建应用。
管理词库
- 登录阿里云Elasticsearch控制台。
在左侧导航栏,单击Elasticsearch Serverless版本。
说明如果您所在的地域没有Elasticsearch Serverless服务,请在顶部菜单栏切换地域。
在Elasticsearch Serverless服务控制台的左侧导航栏,单击应用管理。
在应用管理页面,单击目标应用名称。
在左侧导航栏,单击词库管理,管理词库。
词库列表中显示词库文件名、词库类型、词库来源、文件大小和词条数,并支持添加、下载、更新和删除词典文件。
添加自定义词库。
单击添加自定义词库,在弹出的对话框中配置词库。
参数
说明
词库来源
上传文件:上传本地词库
添加OSS路径:上传OSS中存放的词库
词库类型
ik分词
ik停用词
说明上传的停用词词库会自动合并到分词词库中。
选择OSS Bucket
选择与应用在同一个地域的存放目标词库的OSS Bucket。
选择文件
词库来源为上传文件时,通过单击或拖拽上传本地词库。
词库来源为添加OSS路径时:
目录名称需包含es-serverless,或为OSS Bucket添加es-serverless:es-serverless标签。
添加词典文件:选择词典所在的OSS文件目录,并选择需要添加的词典文件。
说明仅支持dic格式的词典文件,且词典文件采用UTF8编码方式。
上传词库时,如果已有同名同类词库,系统会覆盖原有词库。
更新词库配置。
在目标词库的操作列,单击更新,在弹出的对话框中修改词库来源和更新后的词库文件。
说明不允许更改词库名称和类型。
选择的词库名称需要与源词库名称相同。
下载词库。
在目标词库的操作列,单击下载,直接下载对应txt、dic文件到本地。
删除已添加的词库。
在目标词库的操作列,选择
,单击确认,删除词库。
ik分词词库使用
本文中的命令,均可在Kibana控制台中执行。登录Kibana控制台,请参见登录Kibana控制台。
前提条件
已上传一个或多个ik自定义分词词库或停用词词库。
测试分词
执行以下代码测试分词效果。
# 可以进行分词测试,指定analyzer为 "ik_smart" or "ik_max_word"
GET /_analyze
{
"text": "中华人民共和国国歌",
"analyzer": "ik_smart"
}
返回结果如下。
{
"tokens" : [
{
"token" : "中华人民共和国",
"start_offset" : 0,
"end_offset" : 7,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "国歌",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 1
}
]
}
插入数据并验证分词
执行以下代码插入数据并验证分词。
# 创建索引并指定mapping中某个字段的分词为"ik_max_word",进行数据插入并查询分词验证
PUT /my_index
{
"mappings": {
"my_type": {
"properties": {
"text": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
}
#插入数据
POST /my_index/_doc/
{
"text": "我是中国人,我爱我的祖国"
}
GET /my_index/_analyze
{
"analyzer": "ik_max_word",
"text": "我是中国人,我爱我的祖国"
}
返回结果如下。
{
"tokens" : [
{
"token" : "我",
"start_offset" : 0,
"end_offset" : 1,
"type" : "CN_CHAR",
"position" : 0
},
{
"token" : "中国人",
"start_offset" : 2,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "中国",
"start_offset" : 2,
"end_offset" : 4,
"type" : "CN_WORD",
"position" : 2
},
{
"token" : "国人",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "我",
"start_offset" : 6,
"end_offset" : 7,
"type" : "CN_CHAR",
"position" : 4
},
{
"token" : "爱我",
"start_offset" : 7,
"end_offset" : 9,
"type" : "CN_WORD",
"position" : 5
},
{
"token" : "祖国",
"start_offset" : 10,
"end_offset" : 12,
"type" : "CN_WORD",
"position" : 6
}
]
}