文章目录

  • 查询建议是什么
  • 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查询建议相关推荐

  1. [ElasticSearch]Suggest查询建议(自动补全纠错)

    1) 概念 查询建议,能够为用户提供良好的使用体验.主要包括:     拼写检查(纠错)     自动建议查询词(自动补全) 2) Suggest种类及参数 2.1 Term Suggester Te ...

  2. [Java]-Elastic中suggest查询建议

    文章目录 查询建议API 单个建议查询词 多个建议查询词 Suggester Term suggester 参数 phrase suggester completion suggester 搜索框实现 ...

  3. Elasticsearch搜索引擎第十篇-Query DSL详解

    文章目录 DSL介绍 Match all query 全文查询 match query match phrase query match phrase prefix query multi match ...

  4. ElasticSearch搜索引擎结合Mysql数据库,查询mysql数据

    需要下载的东西 ElasticSearch--https://www.elastic.co/cn/downloads/elasticsearch Logstash(版本需要和ES对应)--https: ...

  5. ElasticSearch 文档检索、查询建议、数据聚合

    目录 结构化搜索 term 单词匹配(单个值) terms 单词匹配(多个值) range 范围查询 exists 存在查询.miss 缺失查询 ids id匹配 prefix 前缀匹配 wildca ...

  6. day06 Elasticsearch搜索引擎2

    day06 Elasticsearch搜索引擎2 1.DSL查询文档 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来 ...

  7. Elasticsearch搜索引擎该怎么使用,这篇文章彻底讲透(荣耀典藏版)

    目录 前言 一.先说说 Lucene 二.ES 核心概念 2.1.集群(Cluster) 2.1.1.发现机制 2.1.2.节点的角色 2.1.3.脑裂现象 2.2.分片(Shards) 2.3.副本 ...

  8. elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)

    一.查询建议介绍 1. 查询建议是什么? 查询建议,为用户提供良好的使用体验.主要包括: 拼写检查: 自动建议查询词(自动补全) 拼写检查如图: 自动建议查询词(自动补全): 2. ES中查询建议的A ...

  9. 【SpringBoot高级篇】SpringBoot集成Elasticsearch搜索引擎

    [SpringBoot高级篇]SpringBoot集成Elasticsearch搜索引擎 1. 什么是Elasticsearch? 2. 安装并运行Elasticsearch 2.1 拉取镜像 2.2 ...

最新文章

  1. javaFX中解决填充(拉伸)问题
  2. vue - .babelrc
  3. ANN:DNN结构演进History—LSTM_NN
  4. ⑥又是星期五,小试牛刀(编写定制标签)
  5. linux mysql 分区_Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)...
  6. CentOS下安装svn,添加新用户,重启svn服务
  7. IE8_XP安装包.zip
  8. 整理总结:深入浅出统计学 —— 相关与回归
  9. 名悦集团:什么是驾驶证终身免检,要满足什么条件
  10. css3书页卷角使用教程,css - 这个卷角的效果怎么做?
  11. 玩转 Windows 10 中的 Linux 子系统
  12. 系统方法定位 IOS
  13. Linux-C 简单的C语言日志库
  14. Ajax和Json使用
  15. 基于springboot的茶叶销售商城网站
  16. 2014年华为南研所校园招聘---机试+面试
  17. IdentityServer4 获取Token及刷新Token
  18. 【杂篇 · 技巧】WebStorm页面窗口与显示bug
  19. 私有云服务器搭建教程(保姆级)——台式电脑+ubuntu+docker+nextcloud+mysql+花生壳内网穿透
  20. 我的项目开发经验积累总结

热门文章

  1. 【汇正财经】股本换算方式
  2. 从何处入手 ——小议流程制度规范改进时各种宏观微观,定位执行间的扯淡之处...
  3. html 中avi视频插件,LPL夏季赛:JDG让一追二击败V5!Kanavi猛如战神,连续2局乱杀...
  4. 解决Windows 2003识别不了的移动硬盘
  5. html怎样给label设置长度,HTML label 标签
  6. NFS共享概述+autofs应用
  7. 佩戴舒适的蓝牙耳机推荐,不堵耳朵的骨传导耳机
  8. Animation Introduce(动画介绍) —— 一拳超人第一季
  9. 社区O2O用户体验报告
  10. 《ThinkPad-笔记本如何进bios设置u盘启动步骤》