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

使用 RestHighLevelClient 进行 Elasticsearch 高亮查询及解析

在搜索引擎中,高亮显示查询关键字是一个提升用户体验的功能,它可以帮助用户更快地定位到相关信息。Elasticsearch 支持在搜索结果中对匹配的文本进行高亮显示。本文将介绍如何在 Java 应用程序中使用 Elasticsearch 的 RestHighLevelClient 执行高亮查询,以及如何解析高亮结果。

环境准备

确保你的项目中已经添加了 Elasticsearch 客户端库的依赖。如果使用 Maven,可以在 pom.xml 文件中添加如下依赖:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level</artifactId><version>7.10.0</version> <!-- 使用适合的版本号 -->
</dependency>

高亮查询示例

1. 高亮查询基础

在 Elasticsearch 中,可以通过 HighlightBuilder 来构建高亮查询。

Java Code
@Test
void testHighlightQuery() throws IOException {// 1. 准备 SearchRequestSearchRequest request = new SearchRequest("hotel"); // 指定索引名称// 2. 准备 DSL 查询request.source().query(QueryBuilders.matchQuery("name", "如家")) // 查询条件.highlighter(new HighlightBuilder().field("name") // 高亮字段.requireFieldMatch(false) // 是否需要与查询字段匹配);// 3. 发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4. 解析响应handleHighlightResponse(response);
}

2. 高亮结果解析

高亮的结果处理涉及到从 SearchHit 中获取高亮字段并进行相应的解析。

private void handleHighlightResponse(SearchResponse response) throws IOException {SearchHits searchHits = response.getHits();System.out.println("共搜索到 " + searchHits.getTotalHits().value + " 条数据");for (SearchHit hit : searchHits.getHits()) {// 获取原始文档信息HotelDoc hotelDoc = JSON.parseObject(hit.getSourceAsString(), HotelDoc.class);// 处理高亮Map<String, HighlightField> highlightFields = hit.getHighlightFields();if (!CollectionUtils.isEmpty(highlightFields)) {HighlightField highlightField = highlightFields.get("name");if (highlightField != null) {// 取出高亮结果数组中的第一个片段String highlightedName = highlightField.getFragments()[0].string();hotelDoc.setName(highlightedName);}}// 打印结果System.out.println(hotelDoc);}
}

结语

Elasticsearch 的高亮功能使得搜索结果中的关键字能够以视觉上突出的方式展示给用户,这在提升搜索结果的可读性方面非常有帮助。通过 RestHighLevelClient,我们可以方便地在 Java 应用程序中实现这一功能。本文提供的示例代码展示了如何使用 Java 的 RestHighLevelClient 进行高亮查询,并给出了高亮结果的解析方法,希望能够帮助开发者更好地利用 Elasticsearch 的高亮功能。

相关文章:

使用 RestHighLevelClient 进行 Elasticsearch 高亮查询及解析

在搜索引擎中&#xff0c;高亮显示查询关键字是一个提升用户体验的功能&#xff0c;它可以帮助用户更快地定位到相关信息。Elasticsearch 支持在搜索结果中对匹配的文本进行高亮显示。本文将介绍如何在 Java 应用程序中使用 Elasticsearch 的 RestHighLevelClient 执行高亮查询…...

Java基础入门15:算法、正则表达式、异常

算法&#xff08;选择排序、冒泡排序、二分查找&#xff09; 选择排序 每轮选择当前位置&#xff0c;开始找出后面的较小值与该位置交换。 选择排序的关键&#xff1a; 确定总共需要选择几轮&#xff1a;数组的长度-1。 控制每轮从以前位置为基准&#xff0c;与后面元素选择…...

SpringBoot响应式编程 WebFlux入门教程

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f525; 微信&#xff1a;zsqtcyw 联系我领取学习资料 …...

LeetCode 383. 赎金信

题目 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 输入&…...

python绘制电路图

要在 Python 中实现电路图&#xff0c;你可以使用一些专门的库来创建和可视化电路图。一个常用的库是 schemdraw&#xff0c;它可以用来绘制电路图&#xff0c;并支持多种电气组件和符号。 下面是一个使用 schemdraw 库绘制简单电路图的示例&#xff1a; 安装 schemdraw 库&am…...

Vue3 Suspense 和 defineAsyncComponent 结合使用方法

Suspense&#xff1a;用于协调对组件树中嵌套的异步依赖的处理。 defineAsyncComponent&#xff1a;定义一个异步组件&#xff0c;它在运行时是懒加载的。参数可以是一个异步加载函数&#xff0c;或是对加载行为进行更具体定制的一个选项对象。 异步组件的好处&#xff1a;使…...

GitHub中Codespace怎么使用;LLM模拟初始化;MLP:全连接神经网络的并行执行

目录 PyUnit unittest是什么 unittest怎么使用 GitHub中Codespace怎么使用 测试常用功能 LLM模拟初始化 参数解释 类属性设置 总结 MLP:全连接神经网络的并行执行 假设 代码解释 注意事项 PyUnit unittest是什么 unittest是Python的内置单元测试框架,原名PyUn…...

【rh】rh项目部署

【fastadmin】 1、项目先clone到本地&#xff0c;其中web为h5前端使用(gitclone后&#xff0c;把web内容放进去再提交)&#xff0c;其余为项目后端使用 2、安装本地环境&#xff0c;项目跑起来&#xff0c;步骤如下&#xff1a; 1&#xff09;查春.git 和 composer,json 版本信…...

VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection Abstract 摘要部分&#xff0c;作者首先指出了3D点云中目标检测的重要性&#xff0c;在自动驾驶导航、家政机器人以及增强现实和虚拟现实等多个领域有重要的作用。然后&#xff0c;提到了现有方法的…...

结构开发笔记(三):solidworks软件(二):小试牛刀,绘制一个立方体

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141122350 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

LLM 量化算法AutoRound 0.3 发布及原理浅析

这里写自定义目录标题 AutoRound V0.3 特性原理浅析其他工作AutoRound 原理 AutoRound&#xff08;https://github.com/intel/auto-round&#xff09;在Llama3.1-8B-Instruct上效果明显优于AWQ/GPTQ等方法&#xff0c;在10个任务的平均准确率上我们以63.93%由于AWQ的63.15%和GP…...

汽车免拆诊断案例 | 2013款北京现代悦动车发动机偶尔无法起动

故障现象 一辆2013款北京现代悦动车&#xff0c;搭载G4FC发动机&#xff0c;累计行驶里程约为13.9万km。车主反映&#xff0c;发动机偶尔无法起动着机&#xff0c;断开点火开关&#xff0c;等待一会儿又可以起动着机。 故障诊断 接车后反复试车&#xff0c;当发动机无法起动着…...

React、AntD,封装动态表单

在React中使用Ant Design(简称AntD)来封装动态表单是一个常见的需求,特别是在需要灵活配置表单字段的场景下。以下是一个基本的步骤和示例代码,展示如何使用React和AntD来封装一个动态表单。 步骤 1: 安装必要的库 首先,确保你的项目中已经安装了react和antd。如果还没有…...

【Linux基础】Linux中的开发工具(3)--make/makefile和git的使用

目录 前言一&#xff0c;Linux项目自动化构建工具-make/makefile1. 背景2. 依赖关系和依赖方法3. 项目清理4. 使用方法和原理5. .PHONY的作用6. makefile中符号的使用 二&#xff0c;进度条的实现1. 理解回车换行2. 理解行缓冲区3. 版本14. 版本2 三&#xff0c;Linux上git的使…...

过滤了字母、数字、_、$的webshell命令执行技巧

目录 对于php5以上首先要解决的问题有 解决技巧 1.code长度小于35位 2.没有字母、数字、_ 、$ 3.怎么把文件放进服务器 4.怎么执行文件里面的内容 1.执行Linux命令 2.执行文件里面的shell命令 5.构造完整的code参数 6.我们还可以通过修改文件里面shell命令&#xff0c;…...

python-A+B again

[题目描述] 小理有一个非常简单的问题给你&#xff0c;给你两个整数 A 和 B&#xff0c;你的任务是计算 AB。输入格式&#xff1a; 输入共 2∗T1 行。 输入的第一行包含一个整数 T 表示测试实例的个数&#xff0c;然后 2∗T 行&#xff0c;分别表示 A 和 B 两个正整数。注意整数…...

C语言—函数递归

一、递归概念 递归其实是⼀种解决问题的⽅法&#xff0c;在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。下面举一个例子&#xff1a; 上述就是⼀个简单的递归程序&#xff0c;只不过上⾯的递归只是为了演⽰递归的基本形式&#xff0c;不是为了解决问题&#xff0c;代码最终…...

结构开发笔记(四):solidworks软件(三):绘制36x36方块摄像头示意体

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/141187797 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…...

【机器学习】Caltech-101的基本概念和使用方法以及Caltech-101和ImageNet的联系和区别

引言 Caltech-101数据集是一个广泛用于对象识别任务的数据库&#xff0c;它包含了大约9,000张图像&#xff0c;这些图像来自101个不同的对象类别。每个类别包含的图像数量大约在40到800张之间&#xff0c;大多数类别大约有50张图像。图像的分辨率大致为300200像素 文章目录 引言…...

mysql Ubuntu安装与远程连接配置

一、安装&#xff08;Ubuntu22环境安装mysql8&#xff09; 这里使用Xshell链接Ubuntu和mysql windows进行操作&#xff0c;特别提醒&#xff1a;安装之前建议对Ubuntu快照处理备份&#xff0c;避免安装中出错导致Ubuntu崩溃。 查看是否安装的有可以用指令&#xff1a;ps -ef|…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...