Elasticsearch搜索引擎第十一篇-Suggest查询建议
文章目录
- 查询建议是什么
- ES查询建议API
- Suggester介绍
- term suggester
- phrase suggester
- completion suggester 自动补全
查询建议是什么
查询建议,能够为用户提供良好的使用体验。主要包括:
- 拼写检查
- 自动建议查询词(自动补全)
如百度、谷歌搜索:
ES查询建议API
查询建议也是使用_search端点地址,在DSL中suggest节点来定义需要的建议查询。
POST twitter/_search
{"query" : {"match": {"message": "tring out Elasticsearch"}},"suggest" : {"my-suggestion" : { #一个查询建议名称"text" : "tring out Elasticsearch", #查询文本"term" : { "field" : "message" #指定在哪个字段上获取建议词}}}
}#多个建议查询可以使用全局的查询文本
POST _search
{"suggest": {"text" : "tring out Elasticsearch","my-suggest-1" : {"term" : {"field" : "message"}},"my-suggest-2" : {"term" : {"field" : "user"}}}
}
Suggester介绍
term suggester
term 词项建议器,对给入的文本进行分词,为每个词进行模糊查询提供词项建议。对于在索引中存在词默认不提供建议词,不存在的词则根据模糊查询结果进行排序后取一定数量的建议词。
常用的建议选项:
phrase suggester
phrase 短语建议,在term的基础上,会考量多个term之间的关系,比如是否同时出现在索引的原文里,相邻程度,以及词频等
POST /ftq/_search
{"query": {"match_all": {}},"suggest" : {"myss":{"text": "java sprin boot","phrase": {"field": "title"}}}
}
completion suggester 自动补全
针对自动补全场景而设计的建议器。此场景下用户每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况下对后端响应速度要求比较苛刻。因此实现上它和前面两个Suggester采用了不同的数据结构,索引并非通过倒排来完成,而是将analyze过的数据编码成FST和索引一起存放。对于一个open状态的索引,FST会被ES整个装载到内存里的,进行前缀查找速度极快。但是FST只能用于前缀查找,这也是Completion Suggester的局限所在。
参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html
为了使用自动补全,索引中用来提供补全建议的字段需特殊设计,字段类型为 completion。
定义一个索引:
PUT music
{"mappings": {"_doc" : {"properties" : {"suggest" : { "type" : "completion" #定义该字段是自动补全的字段},"title" : {"type": "keyword"}}}}
}
存入文档1和文档2,两个文档内容一样:
PUT music/_doc/1?refresh
{"suggest" : {"input": [ "Nevermind", "Nirvana" ], #指定输入值"weight" : 34 #指定排序值(可选)}
}PUT music/_doc/2?refresh
{"suggest" : {"input": [ "Nevermind", "Nirvana" ],"weight" : 20}
}
查询看看:
POST music/_search?pretty
{"suggest": {"song-suggest" : {"prefix" : "nir", "completion" : { "field" : "suggest" }}}
}POST music/_search?pretty
{"suggest": {"song-suggest" : {"prefix" : "nir", "completion" : { "field" : "suggest","skip_duplicates": true #去重}} }
}
接着存入文档3和文档4,存的是短语:
PUT music/_doc/3?refresh
{"suggest" : {"input": [ "lucene solr", "lucene so cool","lucene elasticsearch" ],"weight" : 20}
}PUT music/_doc/4?refresh
{"suggest" : {"input": ["lucene solr cool","lucene elasticsearch" ],"weight" : 10}
}
再查询看看:
POST music/_search?pretty
{"suggest": {"song-suggest" : {"prefix" : "lucene s", "completion" : { "field" : "suggest" ,"skip_duplicates": true}}}
}
Elasticsearch搜索引擎第十一篇-Suggest查询建议相关推荐
- [ElasticSearch]Suggest查询建议(自动补全纠错)
1) 概念 查询建议,能够为用户提供良好的使用体验.主要包括: 拼写检查(纠错) 自动建议查询词(自动补全) 2) Suggest种类及参数 2.1 Term Suggester Te ...
- [Java]-Elastic中suggest查询建议
文章目录 查询建议API 单个建议查询词 多个建议查询词 Suggester Term suggester 参数 phrase suggester completion suggester 搜索框实现 ...
- Elasticsearch搜索引擎第十篇-Query DSL详解
文章目录 DSL介绍 Match all query 全文查询 match query match phrase query match phrase prefix query multi match ...
- ElasticSearch搜索引擎结合Mysql数据库,查询mysql数据
需要下载的东西 ElasticSearch--https://www.elastic.co/cn/downloads/elasticsearch Logstash(版本需要和ES对应)--https: ...
- ElasticSearch 文档检索、查询建议、数据聚合
目录 结构化搜索 term 单词匹配(单个值) terms 单词匹配(多个值) range 范围查询 exists 存在查询.miss 缺失查询 ids id匹配 prefix 前缀匹配 wildca ...
- day06 Elasticsearch搜索引擎2
day06 Elasticsearch搜索引擎2 1.DSL查询文档 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来 ...
- Elasticsearch搜索引擎该怎么使用,这篇文章彻底讲透(荣耀典藏版)
目录 前言 一.先说说 Lucene 二.ES 核心概念 2.1.集群(Cluster) 2.1.1.发现机制 2.1.2.节点的角色 2.1.3.脑裂现象 2.2.分片(Shards) 2.3.副本 ...
- elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)
一.查询建议介绍 1. 查询建议是什么? 查询建议,为用户提供良好的使用体验.主要包括: 拼写检查: 自动建议查询词(自动补全) 拼写检查如图: 自动建议查询词(自动补全): 2. ES中查询建议的A ...
- 【SpringBoot高级篇】SpringBoot集成Elasticsearch搜索引擎
[SpringBoot高级篇]SpringBoot集成Elasticsearch搜索引擎 1. 什么是Elasticsearch? 2. 安装并运行Elasticsearch 2.1 拉取镜像 2.2 ...
最新文章
- javaFX中解决填充(拉伸)问题
- vue - .babelrc
- ANN:DNN结构演进History—LSTM_NN
- ⑥又是星期五,小试牛刀(编写定制标签)
- linux mysql 分区_Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)...
- CentOS下安装svn,添加新用户,重启svn服务
- IE8_XP安装包.zip
- 整理总结:深入浅出统计学 —— 相关与回归
- 名悦集团:什么是驾驶证终身免检,要满足什么条件
- css3书页卷角使用教程,css - 这个卷角的效果怎么做?
- 玩转 Windows 10 中的 Linux 子系统
- 系统方法定位 IOS
- Linux-C 简单的C语言日志库
- Ajax和Json使用
- 基于springboot的茶叶销售商城网站
- 2014年华为南研所校园招聘---机试+面试
- IdentityServer4 获取Token及刷新Token
- 【杂篇 · 技巧】WebStorm页面窗口与显示bug
- 私有云服务器搭建教程(保姆级)——台式电脑+ubuntu+docker+nextcloud+mysql+花生壳内网穿透
- 我的项目开发经验积累总结
热门文章
- 【汇正财经】股本换算方式
- 从何处入手 ——小议流程制度规范改进时各种宏观微观,定位执行间的扯淡之处...
- html 中avi视频插件,LPL夏季赛:JDG让一追二击败V5!Kanavi猛如战神,连续2局乱杀...
- 解决Windows 2003识别不了的移动硬盘
- html怎样给label设置长度,HTML label 标签
- NFS共享概述+autofs应用
- 佩戴舒适的蓝牙耳机推荐,不堵耳朵的骨传导耳机
- Animation Introduce(动画介绍) —— 一拳超人第一季
- 社区O2O用户体验报告
- 《ThinkPad-笔记本如何进bios设置u盘启动步骤》