出自 图灵学院 ElasticSearch课程, 我自己学完了,整理了一下,然后给老师说的话,记录了一下,发了个博客

概述

suggest search(completion suggest):就是建议搜索或称为搜索建议,也可以叫做自动完成-auto completion。类似百度中的搜索联想提示功能。

ES实现suggest的时候,性能非常高,其构建的不是倒排索引,也不是正排索引,就是纯的用于进行前缀搜索的一种特殊的数据结构,而且会全部放在内存中,所以suggest search进行的前缀搜索提示,性能是非常高。

需要使用suggest的时候,必须在定义index时,为其mapping指定开启suggest。具体如下:

入门使用suggest search

创建

PUT /movie
{"mappings": {"properties": {"title": {"type": "text","analyzer": "ik_max_word","fields": {"suggest": { //这个名字可以随便起,这里取名为suggest"type": "completion", //类型是completion,就是自动补全"analyzer": "ik_max_word" //采用的分词器}}},"content": {"type": "text","analyzer": "ik_max_word"}}}
}

插入三条测试数据

PUT /movie/_doc/1
{"title": "西游记电影系列",
"content": "西游记之月光宝盒将与2021年进行......"
}PUT /movie/_doc/2
{"title": "西游记文学系列",
"content": "某知名网络小说作家已经完成了大话西游同名小说的出版"
}PUT /movie/_doc/3
{"title": "西游记之大话西游手游",
"content": "网易游戏近日出品了大话西游经典IP的手游,正在火爆内测中"
}

suggest 搜索:

GET /movie/_search
{"suggest": {//这个字段是关键字,不能随便起名"my-suggest": { // 这个是自己起的名字"prefix": "西游记", // 这个是前缀"completion": {"field": "title.suggest" //这个是你自己定义的索引}}}
}

“field”: “title.suggest”:是你自己定义的索引

结果:

{"took" : 312,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"suggest" : {"my-suggest" : [{"text" : "西游记","offset" : 0,"length" : 3,"options" : [{"text" : "西游记之大话西游手游","_index" : "movie","_type" : "_doc","_id" : "3","_score" : 1.0,"_source" : {"title" : "西游记之大话西游手游","content" : "网易游戏近日出品了大话西游经典IP的手游,正在火爆内测中"}},{"text" : "西游记文学系列","_index" : "movie","_type" : "_doc","_id" : "2","_score" : 1.0,"_source" : {"title" : "西游记文学系列","content" : "某知名网络小说作家已经完成了大话西游同名小说的出版"}},{"text" : "西游记电影系列","_index" : "movie","_type" : "_doc","_id" : "1","_score" : 1.0,"_source" : {"title" : "西游记电影系列","content" : "西游记之月光宝盒将与2021年进行......"}}]}]}
}

有没有发现,结果都是以 “西游记” 开头的, 当你输入"西游记"的时候, ElasticSearch就直接给"西游记"开头的数据都找出来给用户展示.

如果你输入"西游记手游" ,肯定是找不到的索引库里面为 “title” : “西游记之大话西游手游”, 的数据
,因为 suggest search 和模糊搜索是不一样的.因为suggest search 就是搜索以关键字开头的文本,并没有关键字在中间的.

比如说百度你搜索 “你好”, 出来的数据全都是你好开头的数据.没有开头不带"你好"的数据,中间带"你好"的数据


GET /movie/_search
{"suggest": {"my-suggest": {"prefix": "西游记手游","completion": {"field": "title.suggest"}}}
}

ElasticSearch的搜索建议功能suggest search(completion suggest)相关推荐

  1. 苹果推出App Store搜索建议功能

    4月30日消息,据国外媒体报道,苹果正式在App Store上推出了搜索建议功能,将使搜索应用变得更加容易. 据悉,现在在输入搜索关键词之后,App Store将尝试预测你在寻找什么,并提供建议词,当 ...

  2. elasticsearch高级功能系列之completion suggest

    1.首先创建mapping,注意,在需要建议的field创建一个内部fields,suggest,类型是completion ,因为处理的是中文,所以加了ik中文分词器. {"mapping ...

  3. 基于Elasticsearch实现搜索建议

    搜索建议是搜索的一个重要组成部分,一个搜索建议的实现通常需要考虑建议词的来源.匹配.排序.聚合.关联的文档数和拼写纠错等,本文介绍一个基于Elasticsearch实现的搜索建议. 问题描述 电商网站 ...

  4. Elasticsearch Suggester搜索建议详解

    文章目录 1. 概述 2. Term Suggester 2.1 定义 2.2 实例测试 2.3 参数讲解 3. Phrase Suggester 3.1 定义 3.2 实例测试 3.3 结果分析 4 ...

  5. ElasticSearch六:搜索模板与suggest search(自动补全)、地图位置检索功能实现、FileBeat与LogSteash使用

    目录 search template template入门案例 记录template实现重复调用 保存template到ES 调用template执行搜索 查询已定义的template 删除已定义的t ...

  6. 搜索引擎-应用篇(suggest search)

    背景 前缀搜索 联想提示功能 原理探究 ES实现suggest的时候,性能非常高 其构建的不是倒排索引,也不是正排索引,就是纯的用于进行前缀搜索的一种特殊的数据结构 全部放在内存中 所以suggest ...

  7. es基于completion suggest实现搜索提示

    在之前的某一篇中,我们使用了es的前缀搜索,获得了文档根据前缀进行匹配的效果,如下图所示, 下面说说在es中的另一种实现搜索提示的功能,基于completion suggest 进行实现,其在实际应用 ...

  8. 探究ES suggest search

    探究ES suggest search 问题背景 项目中存在的问题 1.项目中主要使用ES进行数据的模糊搜索以及建议搜索,但在查询数据量较大的索引时会出现偶现的慢查询. 2.在进行建议搜索时,用户如果 ...

  9. 基于Elasticsearch实现搜索推荐

    在基于Elasticsearch实现搜索建议一文中我们曾经介绍过如何基于Elasticsearch来实现搜索建议,而本文是在此基于上进一步优化搜索体验,在当搜索无结果或结果过少时提供推荐搜索词给用户. ...

最新文章

  1. 和平精英android怎么写符号,和平精英名字特殊符号怎么打 和平精英名字特殊符号输入方法...
  2. 出现Press ENTER or type command to continue的原因
  3. react(86)--列表项控制选中
  4. [css] 请说说CSS3实现文本效果的属性有哪些?
  5. DCOM EXCE权限配置问题
  6. Socket 编程,一个服务器,多个客户端,互相通信
  7. 【Flink】Flink yarn 下报错ClassNotFoundException: org.apache.hadoop.yarn.api.ApplicationConstants$Environ
  8. YAML的扩展名是.yaml还是.yml?
  9. python二进制文件解析_python – 解析二进制文件的正则表达式?
  10. mysql 执行计划 视频_实战讲解MySQL执行计划,面试官当场要了我
  11. UDS与DoIp整理
  12. 高通下载模式9008
  13. 小程序用php还是java_微信小程序用php开发的可以吗
  14. 为什么变量命名不建议用汉语拼音
  15. pandas一列拆分成多行
  16. 管道/过滤器架构风格的优点和不足
  17. 2018百度之星大赛游记
  18. 常用电子元器件的一些特性(1)
  19. 中国网银安全分析:动态密码锁
  20. hive解析json

热门文章

  1. 如何启动联盟计划:成功的6个步骤
  2. 苹果6S支持HTML5吗,无非创意|案例分析:听说只有苹果手机才能打开这个H5?
  3. access 数据库 mysql数据库_如何将Access数据库移植到MySQL数据库
  4. MTK LCM驱动知识
  5. vue - 练手项目:简易商城
  6. ssm+java房产网站2r04w(程序+lw+源码+远程部署)
  7. 前香港电台古典音乐主持人梁继璋给儿子的备忘录
  8. 英语谚语500句(二)
  9. CIH病毒庐山真面目
  10. 计算器的M+是什么意思