基于ES的自动联想补全
程序员文章站
2022-06-01 12:48:11
...
# 1 安装ik 分词器 滤过
# 2 测试ik分词器是否可用
GET /_analyze
{
"text": "分词器",
"analyzer": "ik_max_word"
}
# 3 put es结构
DELETE /ik_index
PUT /ik_index
{
"settings": {
"index": {
"refresh_interval": "10s",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"translog": {
"flush_threshold_size": "1gb",
"sync_interval": "30s",
"durability": "async"
}
}
},
"mappings": {
"doc": {
"properties":{
"name":{
"type":"text",
"analyzer":"ik_max_word",
"fields":{
"suggest":{
"type":"completion",
"analyzer":"ik_max_word"
}
}
}
}
}
}
}
#4 插入模拟数据
PUT /ik_index/doc/1
{
"name":"北京中经惠众科技有限公司"
}
PUT /ik_index/doc/2
{
"name":"上海万达信息服务有限公司"
}
PUT /ik_index/doc/3
{
"name":"北京万达科技有限公司"
}
PUT /ik_index/doc/4
{
"name":"北京万达信息服务有限公司"
}
# 5 测试 前缀查询和补全
GET /ik_index/_search
{
"suggest": {
"text": "北京中",
"my-suggest": {
"completion":{
"field":"name.suggest",
"size":10
}
}
}
}
#completion,es实现的时候,是非常高性能的,会构建不是倒排索引,也不是正排索引,就是纯的用于进行前缀搜索的一种特殊的数据结构,而且会全部放在内存中,所以auto completion进行的前缀搜索提示,性能是非常高的
# 6 性能记录
# 10分钟导入 600万条记录
上一篇: input输入框自动补全与联想 (jq autocomplete)
下一篇: 2.18 小丑排序