ElasticSearch的搜索建议功能suggest search(completion suggest)
出自 图灵学院 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)相关推荐
- 苹果推出App Store搜索建议功能
4月30日消息,据国外媒体报道,苹果正式在App Store上推出了搜索建议功能,将使搜索应用变得更加容易. 据悉,现在在输入搜索关键词之后,App Store将尝试预测你在寻找什么,并提供建议词,当 ...
- elasticsearch高级功能系列之completion suggest
1.首先创建mapping,注意,在需要建议的field创建一个内部fields,suggest,类型是completion ,因为处理的是中文,所以加了ik中文分词器. {"mapping ...
- 基于Elasticsearch实现搜索建议
搜索建议是搜索的一个重要组成部分,一个搜索建议的实现通常需要考虑建议词的来源.匹配.排序.聚合.关联的文档数和拼写纠错等,本文介绍一个基于Elasticsearch实现的搜索建议. 问题描述 电商网站 ...
- Elasticsearch Suggester搜索建议详解
文章目录 1. 概述 2. Term Suggester 2.1 定义 2.2 实例测试 2.3 参数讲解 3. Phrase Suggester 3.1 定义 3.2 实例测试 3.3 结果分析 4 ...
- ElasticSearch六:搜索模板与suggest search(自动补全)、地图位置检索功能实现、FileBeat与LogSteash使用
目录 search template template入门案例 记录template实现重复调用 保存template到ES 调用template执行搜索 查询已定义的template 删除已定义的t ...
- 搜索引擎-应用篇(suggest search)
背景 前缀搜索 联想提示功能 原理探究 ES实现suggest的时候,性能非常高 其构建的不是倒排索引,也不是正排索引,就是纯的用于进行前缀搜索的一种特殊的数据结构 全部放在内存中 所以suggest ...
- es基于completion suggest实现搜索提示
在之前的某一篇中,我们使用了es的前缀搜索,获得了文档根据前缀进行匹配的效果,如下图所示, 下面说说在es中的另一种实现搜索提示的功能,基于completion suggest 进行实现,其在实际应用 ...
- 探究ES suggest search
探究ES suggest search 问题背景 项目中存在的问题 1.项目中主要使用ES进行数据的模糊搜索以及建议搜索,但在查询数据量较大的索引时会出现偶现的慢查询. 2.在进行建议搜索时,用户如果 ...
- 基于Elasticsearch实现搜索推荐
在基于Elasticsearch实现搜索建议一文中我们曾经介绍过如何基于Elasticsearch来实现搜索建议,而本文是在此基于上进一步优化搜索体验,在当搜索无结果或结果过少时提供推荐搜索词给用户. ...
最新文章
- 和平精英android怎么写符号,和平精英名字特殊符号怎么打 和平精英名字特殊符号输入方法...
- 出现Press ENTER or type command to continue的原因
- react(86)--列表项控制选中
- [css] 请说说CSS3实现文本效果的属性有哪些?
- DCOM EXCE权限配置问题
- Socket 编程,一个服务器,多个客户端,互相通信
- 【Flink】Flink yarn 下报错ClassNotFoundException: org.apache.hadoop.yarn.api.ApplicationConstants$Environ
- YAML的扩展名是.yaml还是.yml?
- python二进制文件解析_python – 解析二进制文件的正则表达式?
- mysql 执行计划 视频_实战讲解MySQL执行计划,面试官当场要了我
- UDS与DoIp整理
- 高通下载模式9008
- 小程序用php还是java_微信小程序用php开发的可以吗
- 为什么变量命名不建议用汉语拼音
- pandas一列拆分成多行
- 管道/过滤器架构风格的优点和不足
- 2018百度之星大赛游记
- 常用电子元器件的一些特性(1)
- 中国网银安全分析:动态密码锁
- hive解析json