基于elasticSearch实现自动补全 基于 RestHighLevelClient
基于elasticSearch实现自动补全
为什么要用es来实现?
因为能共用一个搜索服务,并且稳定,能利用已有的分词器。
有多少种实现方法?本文用的是哪一种?
https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html
本文用的completion suggester 来实现的。
已经有那么多文章了,为何还要写?
很多文章没有及时更新
记录自己的理解
整体流程
添加索引,并单独写一个字节点用来实现自动补全,并设置类型为completion
{
"mappings": {
"properties": {
"fileName": {
"type": "text",
"analyzer": "ik_max_word",
"fields": {
"suggest": {
"type": "completion",
"analyzer": "ik_max_word"
}
}
},
"path": {
"type": "keyword",
"index": false
}
}
}
}
插入数据
POST /search_index/_doc
{
"fileName":"四川成都市龙泉驿生态环境局龙泉驿区3D气溶胶雷达监控采购项目的中标公告"
}
POST /search_index/_doc
{
"fileName":"气溶胶雷达租赁服务报价清单"
}
POST /search_index/_doc
{
"fileName":"四川省遂宁市安居生态环境局臭氧