1.概念

1.1 补全api主要分为四类

  1. Term Suggester(纠错补全,输入错误的情况下补全正确的单词)
  2. Phrase Suggester(自动补全短语,输入一个单词补全整个短语)
  3. Completion Suggester(完成补全单词,输出如前半部分,补全整个单词)
  4. Context Suggester(上下文补全)

整体效果类似百度搜索,如图:

2. Completion suggester   自动补全

针对自动补全场景而设计的建议器。此场景下用户每输入一个字符的时候,就需要即时发送一次查询请求到后端查找匹配项,在用户输入速度较高的情况下对后端响应速度要求比较苛刻。因此实现上它和前面两个Suggester采用了不同的数据结构,索引并非通过倒排来完成,而是将analyze过的数据编码成FST和索引一起存放。对于一个open状态的索引,FST会被ES整个装载到内存里的,进行前缀查找速度极快。但是FST只能用于前缀查找,这也是Completion Suggester的局限所在

2.1建立索引

put  /book{"mappings": {"music" : {"properties" : {"suggest" : {"type" : "completion"},"title" : {"type": "keyword"}}}}
}注意,最终写入数据需要 /book/music

2.2插入数据

put /book/music/_doc/1
{"suggest":"爱一个人好难"
}put /book/music/_doc/2
{"suggest":"爱一个人好难"
}put /book/music/_doc/3
{"suggest":"爱真的需要勇气"
}

2.3自动补全查询

示例1:查询建议根据前缀查询

POST book/music/_search
{"suggest": {"song-suggest" : {"prefix" : "爱","completion" : {"field" : "suggest"}}}
}

示例1:查询建议根据前缀查询结果


{"took": ,"timed_out": false,"_shards": {"total": ,"successful": ,"skipped": ,"failed":},"hits": {"total": ,"max_score": ,"hits": []},"suggest": {"song-suggest": [{"text": "te","offset": ,"length": ,"options": [{"text": "爱一个人好难","_index": "book","_type": "music","_id": "6Xu6mmUBYLvVFwGWpXeL","_score": ,"_source": {"suggest": "爱一个人好难"}},{"text": "爱一个人好难","_index": "book","_type": "music","_id": "6nu8mmUBYLvVFwGWSndC","_score": ,"_source": {"suggest": "爱一个人好难"}},{"text": "爱真的需要勇气","_index": "book","_type": "music","_id": "63u8mmUBYLvVFwGWZHdC","_score": ,"_source": {"suggest": "爱真的需要勇气"}}]}]}
}

示例2:对建议查询结果去重

{"suggest": {"song-suggest" : {"prefix" : "爱","completion" : {"field" : "suggest" ,"skip_duplicates": true}}}
}

本文部分参考:《ES系列十三、Elasticsearch Suggester API(自动补全)》 里面有整个四种补全的方式。

ES系列、Elasticsearch Suggester API(自动补全)相关推荐

  1. SpringCloud(9)— Elasticsearch聚合和自动补全

    SpringCloud(9)- Elasticsearch聚合和自动补全 一 数据聚合 1.聚合的分类 聚合(aggregations)可以实现对文档数据的统计,分析,运算.常见的聚合有三种: 1.桶 ...

  2. Elasticsearch高级使用-自动补全

    一.概念 注意事项 为了避免搜索同音字,搜索时不要使用拼音分词器 二.拼音分词器 官网https://github.com/medcl/elasticsearch-analysis-pinyin 安装 ...

  3. Elasticsearch 分布式搜索引擎 -- 自动补全(拼音分词器、自定义分词器、自动补全查询、实现搜索框自动补全)

    文章目录 1. 自动补全 1.1 拼音分词器 1.2.1 自定义分词器 1.2.2 小结 1.2 自动补全 1.3 实现酒店搜索框自动补全 1.3.1 修改酒店映射结构 1.3.2 修改HotelDo ...

  4. Elasticsearch实战-实现Hotel索引库的自动补全、拼音搜索功能

    一.实现思路 1.修改hotel索引库结构,设置自定义拼音分词器 2.修改索引库的name.all字段,使用自定义分词器 3.索引库添加一个新字段suggestion,类型为completion类型, ...

  5. Elasticsearch生产实战(ik分词器、拼音分词、自动补全、自动纠错)

    目录 一.IK分词器 1.IK分词器介绍 2.安装 3.使用 4.自定义词库 二.拼音分词器 1.拼音分词器介绍 2.安装 三.自动补全 1.效果演示 2.实战 四.自动纠错 1.场景描述 2.DSL ...

  6. ElasticSearch从入门到精通--第七话(自动补全、拼音分词器、自定义分词、数据同步方案)

    ElasticSearch从入门到精通–第七话(自动补全.拼音分词器.自定义分词.数据同步方案) 使用拼音分词 可以引入elasticsearch的拼音分词插件,地址:https://github.c ...

  7. 使用 Elasticsearch 做一个好用的日语搜索引擎及自动补全

    最近基于 Elastic Stack 搭建了一个日语搜索服务,发现日文的搜索相比英语和中文,有不少特殊之处,因此记录下用 Elasticsearch 搭建日语搜索引擎的一些要点.本文所有的示例,适用于 ...

  8. java中使用kuromoji_使用Elasticsearch做一个好用的日语搜索引擎及自动补全

    最近基于 Elastic Stack 搭建了一个日语搜索服务,发现日文的搜索相比英语和中文,有不少特殊之处,因此记录下用 Elasticsearch 搭建日语搜索引擎的一些要点.本文所有的示例,适用于 ...

  9. ElasticSearch高级篇(数据聚和、自动补全、数据同步、分片集群)

    文章目录 1.数据聚合 1.1.聚合的种类 1.2.DSL实现聚合 1.2.1.Bucket聚合语法 1.2.2.聚合结果排序 1.2.3.限定聚合范围 1.2.4.Metric聚合语法 1.2.5. ...

最新文章

  1. matlab fir工具箱,用MATLAB信號處理工具箱進行FIR濾波器設計的三種方法
  2. python横向柱状图-python绘制横向水平柱状条形图Bar
  3. SSE命令示例代码(转换、加载、置位、存储)
  4. 2020年12月大学英语四六级英语作文预测(XDF王江涛)
  5. 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建
  6. 你必须知道的28个HTML5特征、窍门和技术
  7. MySQL模糊查询—is null关键字
  8. mysql索引的种类
  9. 不同.net版本实现单点登录
  10. OpenShift 4 之获取OpenShif的最新开发进度
  11. mysql中递增列_如何使用JDBC在MySQL中创建带有自动递增列的表?
  12. 使用java实现面向对象 第七章
  13. 目标检测回归损失函数——L1、L2、smooth L1
  14. 数据分析人员需要掌握SQL到什么程度?3个常考题目刷一刷
  15. ardupilot 关于设备车Rover的学习《1》------如何编译下载
  16. 走进tensorflow第六步——拟合一元二次函数
  17. 从端到云:飞腾平台全栈解决方案白皮书
  18. 计算机的基本配件图片,计算机硬件的重要部件
  19. 听音室-HIFI入门之400多张发烧碟中选出的精品
  20. 解决ImageIo图像类型不支持的异常:Unsupported Image Type

热门文章

  1. 计算机视觉实验:边缘提取与特征检测
  2. Power BI —— 微软的数据分析和可视化工具工业数据分析(一)
  3. 厉害了!万能的支付宝,融入生活的刷脸支付
  4. c语言实现将字符串首尾*删除,java 编写函数将字符串的首尾空格删除。
  5. 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模
  6. 电压跟随器的概念及使用总结
  7. 工作是基础,身体是本钱
  8. 长安链cmc工具check user cert on chain failed解决
  9. tinyxml2创建、读取、修改文件通用操作
  10. CVPR2022论文速览--Vehicle trajectory prediction works, but not everywhere