当前位置: 首页 > news >正文

Elasticsearch 搜索高亮功能及示例

在全文搜索中,高亮显示搜索关键字是一种常见的需求,它可以帮助用户快速定位到搜索词在文本中的位置。Elasticsearch 提供了强大的高亮功能,允许我们在搜索结果中突出显示匹配的文本片段。

高亮原理

Elasticsearch 的高亮功能通过在搜索结果中将关键字用特定的 HTML 标签标记出来实现。然后在前端页面中,可以给这些标签添加 CSS 样式,使其突出显示。

高亮语法

在 Elasticsearch 查询中,可以通过 highlight 参数来指定高亮的字段和一些高亮选项。基本语法如下:

GET /index/_search
{"query": {"match": {"FIELD": "SEARCH_TERM"}},"highlight": {"fields": {"FIELD": {"pre_tags": ["<em>"],  // 标记高亮字段的前置标签"post_tags": ["</em>"]  // 标记高亮字段的后置标签}}}
}

高亮字段与搜索字段重合示例

当高亮字段与搜索字段一致时,即我们希望在搜索的字段上直接进行高亮显示。

示例

假设我们有一个 hotel 索引,其中 description 字段包含了酒店的描述信息,我们希望在搜索时高亮显示 description 字段中的关键字 “spa”。

GET /hotel/_search
{"query": {"match": {"description": "spa"}},"highlight": {"fields": {"description": {"pre_tags": ["<em>"],"post_tags": ["</em>"]}}}
}

高亮字段与搜索字段不重合示例

当高亮字段与搜索字段不一致时,即我们希望在搜索的字段上进行高亮显示,但是高亮的字段是另一个字段。

示例

假设我们希望在 hotel 索引中搜索 name 字段中的 “如家”,但是我们想在 description 字段上进行高亮显示。

GET /hotel/_search
{"query": {"match": {"name": "如家"}},"highlight": {"fields": {"description": {"pre_tags": ["<em>"],"post_tags": ["</em>"],"require_field_match": false  // 允许高亮非搜索字段}}}
}

在这个例子中,我们使用了 require_field_match 设置为 false,这样即使 description 字段不是搜索字段,我们也可以在其上进行高亮显示。

结语

Elasticsearch 的搜索高亮功能极大地增强了搜索结果的可读性,帮助用户快速识别信息。通过合理配置高亮参数,我们可以在不同的字段上实现高亮效果,无论是在搜索字段上直接高亮,还是在其他字段上间接高亮。希望本文能帮助你更好地理解和使用 Elasticsearch 的搜索高亮功能。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 谷粒商城实战笔记-179~183-商城业务-检索服务-SearchRequest和SearchResponse构建
  • js中的promise、async/await 用法,详解async、await 语法糖,js中的宏任务和微任务(保姆级教程二)
  • vscode的C/C++环境配置和调试技巧
  • 基于Transformer机制的AI现阶段可能已达峰值
  • xss复现
  • WPF打印控件内容
  • 嵌入式linux系统镜像制作day2
  • 软件工程概述(上)
  • 关注自闭症儿童:走进他们孤独的世界
  • CentOS7安装流程步骤详细教程
  • 数学建模预测类—【多元线性回归】
  • 【ARM】Cortex-A72技术手册(1)
  • c语言---文件
  • SQL每日一练-0816
  • CSS的:current伪类:精准定位当前活动元素
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 10个确保微服务与容器安全的最佳实践
  • CSS居中完全指南——构建CSS居中决策树
  • eclipse的离线汉化
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES2017异步函数现已正式可用
  • IP路由与转发
  • JAVA并发编程--1.基础概念
  • js面向对象
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Vultr 教程目录
  • 京东美团研发面经
  • 前端js -- this指向总结。
  • 前端临床手札——文件上传
  • 设计模式走一遍---观察者模式
  • nb
  • Hibernate主键生成策略及选择
  • linux 淘宝开源监控工具tsar
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​一些不规范的GTID使用场景
  • # windows 安装 mysql 显示 no packages found 解决方法
  • $().each和$.each的区别
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (差分)胡桃爱原石
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (回溯) LeetCode 46. 全排列
  • (简单) HDU 2612 Find a way,BFS。
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)visual stdio 书签功能介绍
  • *上位机的定义
  • .describe() python_Python-Win32com-Excel
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...