Elasticsearch:Completion Suggester - Part 1

Elasticsearch in java 范例:自动补齐功能(completion suggester) 本文将用java语言实现一个简单例子来叙述如何使用elasticsearch中的completion suggester功能。例子的主要功能是为股票的名称和编号建立自动补齐功能。 阅读详情

介绍

Elasticsearch的Completion Suggester是一种专门为快速自动补全功能设计的查询类型。它主要用于提供实时的建议或提示,以帮助用户在搜索框中完成输入。以下是其主要特点:

  1. 快速响应:Completion Suggester针对快速查找进行了优化,确保即使在大量数据和高并发请求的情况下也能提供实时响应。

  2. 前缀匹配:它通常用于支持用户输入时的前缀匹配,即当用户开始输入查询时,它会基于已输入的前缀提供可能的补全建议。

  3. 自定义权重:您可以为索引中的每个建议项分配权重,以影响其在结果中的排名。这意味着更相关或更受欢迎的建议可以被配置为更有可能出现在列表的顶部。

  4. 文档源字段:当建议被返回时,它们可以包含与建议相关的其他信息,如标题或ID,从而使前端实现更加灵活和信息丰富。

  5. 上下文过滤:Completion Suggester支持上下文过滤,使得建议能够根据某些条件如用户地理位置、个人喜好等进行动态过滤和调整。

  6. FST(Finite State Transducers):Elasticsearch使用FST技术来存储和检索Completion Suggester数据,这有助于在保持高性能的同时减少内存占用。

  7. 简单的查询语法:它提供了一种简单的查询语法,使得开发者可以轻松地实现和集成自动补全功能。

  8. 容易集成:与Elasticsearch的其他特性一样,Completion Suggester也易于集成到现有的应用程序中,提供了灵活性和可扩展性。

总的来说,Completion Suggester是Elasticsearch提供的一个强大工具,特别适用于需要快速响应和实时更新的自动补全场景。

实战

索引定义

用来产生建议的字段需要设置成“completion”类型。除了用来产生建议的字段,还可以像普通的索引一样定义其它字段。

{
    "mappings": {
        "properties": {
            "suggest": {
                "type": "completion"
            },
            "detail": {
                "type": "keyword"
            }
        }
    }
}

上面这个索引包括suggest和detail字段,suggest字段用来生成索引。

增加Suggestion内容

实际上,Suggestion由input和weight构成。下面这些都是正确的做法:


像普通索引一样增加Suggestion,默认权重是1
put {{host}}/{{index_name}}/_doc/1
Content-Type: application/json

{
  "suggest" : "后端开发1"
}

显式指定权重
put {{host}}/{{index_name}}/_doc/2
Content-Type: application/json

{
  "suggest" : {
    "input": "后端开发2",
    "weight" : 2
  }
}

多个词,默认权重是1
put {{host}}/{{index_name}}/_doc/3
Content-Type: application/json

{
  "suggest" : {
    "input": [ "后端开发3-1", "后端开发3-2" ]
  }
}

多个词,显式指定权重
put {{host}}/{{index_name}}/_doc/4
Content-Type: application/json

{
  "suggest" : {
    "input": [ "后端开发4-1", "后端开发4-2" ],
    "weight" : 3
  }
}

多个词,显式指定权重
put {{host}}/{{index_name}}/_doc/5
Content-Type: application/json

{
  "suggest" : [{"input": "后端开发5-1", "weight" : 5}, {"input": "后端开发5-2", "weight" : 6}]
}

查询

  • 查询由suggest字段指定条件,可以包含多个字查询(像下面的suggest1,suggest2)
  • 可以通过_source字段限制返回的字段
  • 不支持通过filter或query过滤建议结果
  • 可以使用size限制返回的建议数量
  • 可以使用skip_duplicates去重
  • 返回的结果会根据权重排序

请求示例如下:

get {{host}}/{{index_name}}/_search
Content-Type: application/json

{
  "suggest": {
    "suggest1": {
      "prefix": "后端",        
      "completion": {         
          "field": "suggest",
          "size": 1,
          "skip_duplicates": true
      }
    },
    "suggest2": {
      "prefix": "软件",        
      "completion": {         
          "field": "suggest",
          "size": 1,
          "skip_duplicates": true
      }
    }
  },
  "_source": {
    "excludes": ["sourceType"]
  }
}

结果示例如下:

{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 0,
            "relation": "eq"
        },
        "max_score": null,
        "hits": []
    },
    "suggest": {
        "suggest1": [
            {
                "text": "后端",
                "offset": 0,
                "length": 2,
                "options": [
                    {
                        "text": "后端开发4-1",
                        "_index": "demo-suggester-completion-e1",
                        "_id": "4",
                        "_score": 3.0,
                        "_source": {
                            "suggest": {
                                "input": [
                                    "后端开发4-1",
                                    "后端开发4-2"
                                ],
                                "weight": 3
                            }
                        }
                    }
                ]
            }
        ],
        "suggest2": [
            {
                "text": "软件",
                "offset": 0,
                "length": 2,
                "options": [
                    {
                        "text": "软件开发",
                        "_index": "demo-suggester-completion-e1",
                        "_id": "qbvEwowB1R4wwBSB4Rmj",
                        "_score": 1.0,
                        "_source": {
                            "suggest": "软件开发",
                            "detail": "软件开发详情"
                        }
                    }
                ]
            }
        ]
    }
}
Elasticsearch实现检索词自动补全(检索词补全,自动纠错,拼音补全,繁简转换) 包含demo 下面的请求定义了一个名为 “book” 的 Elasticsearch 索引,其中包含一个 具有 “text” 数据类型和 “standard” 分析器且名为 “title” 的字段。此字段用于处理书籍标题的文本数据。定义了名为 “suggest” 的 “completion” 子字段,用于支持实时搜索建议的自动补全功能。 阅读详情

相关推荐

实战分享:如何用Jetson Nano+HM30图传搭建低空YOLOv5检测系统(附VNC避坑指南)

本文详细介绍了如何利用Jetson Nano和HM30图传搭建低空YOLOv5检测系统,重点解决了无人机应用中的硬件连接和VNC延迟优化问题。通过对比WiFi直连与图传方案的优劣,提供了网络配置、VNC优化及YOLOv5模型加速的实战技巧,帮助开发者实现高效稳定的低空目标检测系统。

weixin_29174385的博客 110

es搜索建议相关(建议词过滤,前缀、中缀匹配等)

目录 一、搜索建议介绍 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、搜索建议介绍 es中提供了几种suggest搜索建议方式 Term Suggester:补全纠错,用户输入错误的情况下返回一个正确的建议 Phrase Suggester:短语自动补全 Completion Suggester:完全补全,fst结构 Context Suggester:根据上下文补全,通常用于对第三种方式的过滤操作 对于中文而言,es..

qq_41214487的博客 8536

小米MIUI 12免REC解锁Root:Magisk Manager与Fastboot实战指南

本文详细介绍了小米MIUI 12免REC解锁Root的完整流程,涵盖Magisk Manager与Fastboot的实战操作。从解锁前的准备工作到提取boot.img、Magisk修补技巧,再到Fastboot刷入全流程,提供了常见问题解决方案和进阶优化建议,帮助用户安全高效地获取Root权限。

weixin_33698823的博客 226

ElasticSearch之Completion Suggester

通过completion suggester可以实现如下的效果:其实就是做的like xxx%这种。通过FST这种数据结构来存储,实现快速的前缀匹配,并且可以将es所有的数据加载到内存中所以速度completion的查询速度非常快。需要注意,如果是某个字段想要使用completion suggester的功能,需要将其类型设置为completion,也就是我们需要显示的设置mapping来指定。

wang0907的博客 1111

iPhone免越狱Git服务器搭建教程-iSH

iPhone免越狱Git服务器搭建教程

jts666的博客 4430

飞行器坐标转换

本文定义的是右手直角坐标系,x−y−zx-y-zx−y−z轴分别为北-天-东。从AAA坐标系到BBB坐标系是分别绕y−z−xy-z-xy−z−x轴,即天-东-北旋转ψ−θ−γψ−θ−γ。如果AAA是惯性系,BBB是机体系,则这三个角度分别为偏航角、俯仰角、横滚角。图1 惯性系到机体系。

gongfuyd的博客 1356

在 Elasticsearch 中实现自动完成功能 3:completion suggester

在这篇博文中,我们将讨论- 一种针对自动完成功能进行优化的,并且被认为比我们迄今为止讨论的方法更快。Completion suggester 使用称为的数据结构,该结构类似于 Trie 数据结构,并且针对更快的查找进行了优化。这些数据结构存储在节点的内存中,以实现更快的搜索。与 edge-n-gram 和 search_as_you_type 一样,这也通过使用我们提供的输入更新内存中的 FST 来完成索引时的大部分工作。

Elastic 中国社区官方博客 1423

提示工程ROI计算模板:架构师私藏Excel表(含自动计算)

花3个人力优化提示词,到底能带来多少实际收益?“这个提示工程项目值得做吗?投入10万成本,多久能回本?“不同LLM应用的提示词优化优先级怎么排?全凭经验拍脑袋?当前90%的企业在提示工程投入上缺乏标准化的量化评估方法,导致资源浪费(盲目投入无回报项目)或错失机会(低估高价值优化点)。ROI = (总收益 - 总成本) / 总成本 × 100%对于提示工程,总成本=显性成本+隐性成本,总收益=直接收益+间接收益(后文会详细拆解)。提示工程的价值不是“玄学”,而是可以用数据量化的投资行为。本文分享的。

AI开发架构师 1077

10.completion_suggester

文章目录1. Completion Suggester 简介2.存储doc文档2. 查询使用3. 跳过重复的suggestions4. Fuzzy queries4. Regex queries 1. Completion Suggester 简介 有关不使用 suggest 者的更灵活的search-as-you-type类型的搜索,请参阅search_as_you_type字段类型。 completion suggester 提供自动completion/search-as-you-type功能。这是一

寒夜 1169

20、机器人硬件改造与Geomagic Touch设备的运动学和动力学模型

本文详细介绍了机器人CRS 465和255的硬件改造过程,包括数字阶段、模拟阶段、功率阶段及软件实现,并深入研究了Geomagic Touch触觉设备的五自由度与三自由度运动学、微分运动学及动力学模型。文章还探讨了其在虚拟手术、装配等场景中的应用,提出了硬件与模型优化方向,如电源管理改进、信号处理优化、参数校准与自适应控制,并展望了多机器人协作、多传感器融合与智能控制算法的发展前景。

e4f5g6h7的博客 122

基于STM32L4XX的环境光传感器(VCNL4040M3OE)应用程序设计

• 集成模块:红外发射器(IRED)、环境光传感器(ALS)、接近传感器(PS)及信号调理IC。#define VCNL4040_I2C_ADDR (0x60 << 1) // 7位地址左移一位。// 组合成16位值。// I2C总线句柄。// 设置参数:ALS集成时间160ms,中断禁止,ALS功能开启。// 设置参数:PS工作频率80Hz,开红外二极管,PS功能开启。// 初始化I2C外设。• 输出类型:I2C总线(ALS/PS)// 2. 配置环境光传感器 (ALS) 并启动。

myron6688的博客 144

elasticsearch-自动补全

自定义拼音分词器,根据拼音得到字段搜索文档数据 拼音分词器不会分词 ,而且也没有补充汉字,需要自定义分词器 指定分词配置 网站:/github.com/medcl/elasticsearch-analysis-pinyin 自定义分词器myanalyzer 包括tokenizer与filter——>对分好的词做进一步处理 // 自定义拼音分词器 PUT /test { "settings": { "analysis": { "anal...

weixin_57128596的博客 1620

Dify 第 13 篇 Dify 工作流 详解

工作流通过将复杂任务分解为节点降低复杂度,提升LLM应用的性能和稳定性。Dify工作流分为两类:Chatflow面向对话场景(如客服),支持多轮对话;Workflow面向批处理场景(如翻译),提供逻辑节点实现自动化。核心概念包括节点、变量(系统/会话/环境变量)及应用类型差异:Chatflow支持中间输出和对话历史,Workflow仅支持结束节点输出。系统变量以"sys"开头,用于全局数据传递,不同应用类型变量不同,如Chatflow的sys.query存储用户输入,Workflow的s

甘蓝的专栏 3253

Suggester之Completion Suggester

Completion Suggester

Just Do IT 1233

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ElasticSearch教程——基于completion suggest实现搜索提示

ElasticSearch汇总请查看:ElasticSearch教程——汇总篇   前言 completion suggest也叫自动完成,搜索推荐,搜索提示 ,一般多叫自动完成,即auto completion。 比如说我们在百度,搜索,你现在搜索“大话西游” --&gt;  百度,自动给你提示,“大话西游电影”,“大话西游小说”, “大话西游手游”等,不用你把所有你想要输入的文本都输入...

东天里的冬天 2904

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

es 中文前缀短语匹配(搜索智能补全) prefix查询和completion suggester两种方式

es正常的prefix只能进行词语匹配,而中文的分词大部分按字分词,不按语义分词,所以无法搜索出正确的前缀匹配,而能进行短语匹配的match_phrase_prefix匹配,是正常按前几个词进行匹配,最后一个词进行前缀匹配,也不满足要求。查阅很多资料发现,离正确答案只差一个keyword。:es进行前缀匹配,用来进行智能补全。

smilng的博客 1964

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

elasticsearch高级功能系列之completion suggest

1、首先创建mapping,注意,在需要建议的field创建一个内部fields,suggest,类型是completion ,因为处理的是中文,所以加了ik中文分词器。 { "mappings": { "book": { "properties": { "bookAuthor": { "type": "text&quot

1073960086的博客 4655

Elasticsearch 自动补全 completion type

Elasticsearch 自带 suggest query 的功能,作为自动补全和查询建议的工具,称为 suggester。

weixin_43849685的博客 999

ES使用completion类型做自动建议时,建议多开一个子字段

ES使用completion suggest做自动建议时,建议多开一个子字段,如下示例,假设要根据title字段做自动建议,那么该字段的类型就得改为completion,不过建议不要改原字段的类型,多开一个子字段title.suggest,类型设置为completion,然后之后的suggest针对title.suggest字段做操作就好,参考mapping如下: "title": { "type": "text", "analyzer": "ik_max_word"

硅脂味咖啡的博客 3178

ElasticSearch的搜索建议功能suggest search(completion suggest)

出自 图灵学院 ElasticSearch课程, 我自己学完了,整理了一下,然后给老师说的话,记录了一下,发了个博客 ​ 概述 suggest search(completion suggest):就是建议搜索或称为搜索建议,也可以叫做自动完成-auto completion。类似百度中的搜索联想提示功能。 ​ ES实现suggest的时候,性能非常高,其构建的不是倒排索引,也不是正排索引,就是纯的用于进行前缀搜索的一种特殊的数据结构,而且会全部放在内存中,所以suggest search进行的前缀搜索提示

张俊杰 的博客 4040

elasticsearch 笔记三:查询建议介绍、Suggester、自动完成

查询建议,为用户提供良好的使用体验。主要包括: 拼写检查;自动建议查询词(自动补全)拼写检查如图:: 对给入的文本进行分词,为每个词进行模糊查询提供词项建议,并不会考虑多个term/词组之间的关系。。API调用方只需为每个token挑选options里的词,组合在一起返回给用户前端即可,在Term Suggester的基础上,会考量多个term之间的关系,比如是否同时出现在索引的原文里,相邻程度,以及词频等等,FST数据结构,类似Trie树,不用打开倒排,快速返回,前缀匹配。

LoveSummer 2943

基于 Elasticsearch Completion Suggester 实现高效搜索智能提示

搜索智能提示(Search Suggestion 或 Autocomplete)是指在用户输入关键词的过程中,系统根据用户的部分输入实时提供候选建议。这些提示通常基于用户的历史搜索记录、热门关键词或内容数据库生成,旨在提高搜索效率和准确性。例如,在电商平台中,当用户输入“iPh”时,系统可能会自动提示“iPhone 14 Pro Max”、“iPhone 配件”等选项,帮助用户快速完成搜索。在 Elasticsearch 中,是一种专为高效生成搜索提示而设计的工具。

hello.reader 2053

ElasticSearch内容分享(五):ElasticSearch自动补全

如何使用拼音分词器?①下载pinyin分词器②解压并放到elasticsearch的plugin目录③重启即可如何自定义分词器?①创建索引库时,在settings中配置,可以包含三部分③tokenizer④filter拼音分词器注意事项?为了避免搜索到同音字,搜索时不要使用拼音分词器默认的拼音分词器会将每个汉字单独分为拼音,而我们希望的是每个词条形成一组拼音,需要对拼音分词器做个性化定制,形成自定义分词器。character filters:在tokenizer之前对文本进行处理。

之乎者也·的博客 1841

Elasticsearch completion suggest解析

例如,“天上人间”分析为:“天上人间”、“天上”、“上人”、“人间”四个词条。 要注意这4个词条还有顺序,也就是position分别为0, 1, 2, 3。FST实际上是前缀编码,这些词被顺序串联在一起进行编码,并记录了每个词条的相对位置,编码后形如:天上人间|天上|上人|人间0 1 2 3特别注意,这时候所有的查找都只能从0位置的“天”开始。...

东境物语 3040

Elasticsearch:Completion suggester - 实现 Search-As-You-Type

Completion suggester 提供自动完成/输入时搜索功能。 这是一个导航功能,可以在用户键入内容时指导他们获得相关结果,从而提高搜索精度。 它并不用于拼写纠正或诸如为term 及 phrase 提供建议。对于 suggester,请你阅读我之前的文章: Elasticsearch:如何实现短语建议 - phrase suggester Elasticsearch:如何在 Elasticsearch中 查询相似的术语 (suggest API) 理想情况下,自动完成功能应与.

Elastic 中国社区官方博客 2125

ES报文辅助生成工具-JavaFX

此程序为基于 Java8 开发的 JavaFX Maven 工程,是 Java 组装ElasticSearch请求报文工具的辅助 Java 代码生成工具,方便开发者快速编写代码。现学现用,写得不好。 应用图标路径 CharEnum.java LineToken.java FormatConfig.java CodeFormatUtils.java 核心类 FileUtils.java 用于持久化 ConfigScheduledService.java 保存配置的任务 FormatScheduledS

daodfs1的博客 993
上一篇: 什么是JSONL(NDJSON)?
下一篇: Idea中.properties文件显示问题
ken_coding
博客等级 码龄4年 239粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值