Elasticsearch主动补全怎样实现

[复制链接]
发表于 2026-1-18 15:01:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这个主动补全的功能怎么说呢?比如百度搜索的时间只是输入了一个“老”,但是会有很多提示,什么老师,老人之类的。这就是主动补全!
  1. GET /索引/_search
  2. {
  3.   "suggest": {
  4.     "prefix_suggestion": {// 自定义推荐名,就是自己起的名字
  5.       "prefix": "elastic",// 被补全的关键字,就相当于搜索框中输入的
  6.       "completion": {
  7.         "field": "productName",// 查询的域
  8.         "skip_duplicates": true, // 忽略重复结果
  9.         "size": 10 //最多查询到的结果数
  10.        }
  11.      }
  12.    }
  13. }
复制代码
有一点要留意!注:主动补全对性能要求极高,ES不是通过倒排索引来实现的,以是须要将对应的查询字段范例设置为completion。
  1. PUT /product2
  2. {
  3.   "mappings":{
  4.     "properties":{
  5.       "id":{
  6.         "type":"integer",
  7.         "store":true,
  8.         "index":true
  9.        },
  10.       "productName":{
  11.         "type":"completion"
  12.        },
  13.       "productDesc":{
  14.         "type":"text",
  15.         "store":true,
  16.         "index":true
  17.        }
  18.      }
  19.    }
  20. }
  21. POST /product2/_doc
  22. {
  23.   "id":1,
  24.   "productName":"elasticsearch1",
  25.   "productDesc":"elasticsearch1 is a good search engine"
  26. }
  27. POST /product2/_doc
  28. {
  29.   "id":2,
  30.   "productName":"elasticsearch2",
  31.   "productDesc":"elasticsearch2 is a good search engine"
  32. }
  33. POST /product2/_doc
  34. {
  35.   "id":3,
  36.   "productName":"elasticsearch3",
  37.   "productDesc":"elasticsearch3 is a good search engine"
  38. }
复制代码
  1. GET /product2/_search
  2. {
  3.   "suggest": {
  4.     "prefix_suggestion": {// 自定义推荐名
  5.       "prefix": "el",// 被补全的关键字
  6.       "completion": {
  7.         "field": "productName",// 查询的域
  8.         "skip_duplicates": true, // 忽略重复结果
  9.         "size": 10 //最多查询到的结果数
  10.        }
  11.      }
  12.    }
  13. }
复制代码
 
 
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表