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

RestClient查询文档排序、分页和高亮

目录

排序、分页

高亮

高亮请求构建

高亮结果解析


排序、分页

搜索结果的排序和分页是与query同级的参数,因此同样是使用request.source()来设置。

对应的API如下:

完整代码示例:

@Test
void testPageAndSort() throws IOException {// 页码,每页大小int page = 1, size = 5;// 1.准备RequestSearchRequest request = new SearchRequest("hotel");// 2.准备DSL// 2.1.queryrequest.source().query(QueryBuilders.matchAllQuery());// 2.2.排序 sortrequest.source().sort("price", SortOrder.ASC);// 2.3.分页 from、sizerequest.source().from((page - 1) * size).size(5);// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

高亮

高亮的代码与之前代码差异较大,有两点:

  • 查询的DSL:其中除了查询条件,还需要添加高亮条件,同样是与query同级。
  • 结果解析:结果除了要解析_source文档数据,还要解析高亮结果

高亮请求构建

高亮请求的构建API如下:

上述代码省略了查询条件部分,但是大家不要忘了:高亮查询必须使用全文检索查询,并且要有搜索关键字,将来才可以对关键字高亮。

完整代码如下:

@Test
void testHighlight() throws IOException {// 1.准备RequestSearchRequest request = new SearchRequest("hotel");// 2.准备DSL// 2.1.queryrequest.source().query(QueryBuilders.matchQuery("all", "如家"));// 2.2.高亮request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));// 3.发送请求SearchResponse response = client.search(request, RequestOptions.DEFAULT);// 4.解析响应handleResponse(response);}

高亮结果解析

高亮的结果与查询的文档结果默认是分离的,并不在一起。

因此解析高亮的代码需要额外处理:

代码解读:

  • 第一步:从结果中获取source。hit.getSourceAsString(),这部分是非高亮结果,json字符串。还需要反序列为HotelDoc对象
  • 第二步:获取高亮结果。hit.getHighlightFields(),返回值是一个Map,key是高亮字段名称,值是HighlightField对象,代表高亮值
  • 第三步:从map中根据高亮字段名称,获取高亮字段值对象HighlightField
  • 第四步:从HighlightField中获取Fragments,并且转为字符串。这部分就是真正的高亮字符串了
  • 第五步:用高亮的结果替换HotelDoc中的非高亮结果

完整代码如下:

private void handleResponse(SearchResponse response) {// 4.解析响应SearchHits searchHits = response.getHits();// 4.1.获取总条数long total = searchHits.getTotalHits().value;System.out.println("共搜索到" + total + "条数据");// 4.2.文档数组SearchHit[] hits = searchHits.getHits();// 4.3.遍历for (SearchHit hit : hits) {// 获取文档sourceString json = hit.getSourceAsString();// 反序列化HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);// 获取高亮结果Map<String, HighlightField> highlightFields = hit.getHighlightFields();if (!CollectionUtils.isEmpty(highlightFields)) {// 根据字段名获取高亮结果HighlightField highlightField = highlightFields.get("name");if (highlightField != null) {// 获取高亮值String name = highlightField.getFragments()[0].string();// 覆盖非高亮结果hotelDoc.setName(name);}}System.out.println("hotelDoc = " + hotelDoc);}
}

相关文章:

RestClient查询文档排序、分页和高亮

目录 排序、分页 高亮 高亮请求构建 高亮结果解析 排序、分页 搜索结果的排序和分页是与query同级的参数&#xff0c;因此同样是使用request.source()来设置。 对应的API如下&#xff1a; 完整代码示例&#xff1a; Test void testPageAndSort() throws IOException {// …...

API项目5:申请签名 在线调用接口

开发申请签名 现在用户已经能看到这个接口了&#xff0c;也能看到这个接口文档&#xff0c;接下来就要在线调用 现在我们可以给每个新注册的用户自动分配一个签名和密钥&#xff0c;去修改一下注册流程&#xff1a; backend 项目&#xff0c;找到 UserServiceImpl.java 中的…...

Google FabricDiffusion:开启3D虚拟试穿新篇章

随着数字化转型的步伐不断加快,时尚界也在探索如何利用最新技术为消费者带来更加沉浸式的购物体验。在这一背景下,Google 推出了一项名为 FabricDiffusion 的新技术,这项技术能够将2D服装图像中的高质量织物纹理转移到任意形状的3D服装模型上,从而为3D虚拟试穿提供了更为真…...

【开发语言】c++的发展前景

C作为一种历史悠久且功能强大的编程语言&#xff0c;在软件开发领域一直保持着其独特的地位和广泛的应用前景。尽管近年来出现了许多新的编程语言和技术趋势&#xff0c;但C由于其高性能、低层访问能力以及广泛的生态系统&#xff0c;在多个领域依然具有不可替代的优势。以下是…...

【机器学习】图像识别——计算机视觉在工业自动化中的应用

1. 引言 随着人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;的快速发展&#xff0c;计算机视觉已成为工业自动化中的核心技术之一。图像识别&#xff0c;作为计算机视觉领域的重要分支&#xff0c;能够通过分析和理解图像或视频数据来识别、分类或检…...

lstm基础知识

lstm前言 LSTM(Long short-term memory)通过刻意的设计来避免长期依赖问题&#xff0c;是一种特殊的RNN。长时间记住信息实际上是 LSTM 的默认行为&#xff0c;而不是需要努力学习的东西&#xff01; 在标准的RNN中&#xff0c;这个重复模块具有非常简单的结构&#xff0c;例…...

Linux :at crontab简述

at命令 在指定的日期、时间点自动执行预先设置的一些命令操作&#xff0c;属于一次性计划任务系统服务的名称&#xff1a;/etc/init.d/atd存放一次性计划任务的文件&#xff1a;/var/spool/at/^a 依靠 /etc/at.allow&#xff08;白名单&#xff09;和 /etc/at.deny&#xff08…...

Python,Swift,Haskell三种语言在使用正则表达式上的方法对比

这里插入图片描述](https://i-blog.csdnimg.cn/direct/fea1494d0d0c4c9880881493929a8b91.png)在讨论 Python、Swift 和 Haskell 在正则表达式处理字符串方面的优缺点时&#xff0c;可以从它们对正则表达式的支持、灵活性和性能进行比较。以下通过具体的正则表达式字符串匹配例…...

leetcode力扣刷题系列——【三角形的最大高度】

题目 给你两个整数 red 和 blue&#xff0c;分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形&#xff0c;满足第 1 行有 1 个球&#xff0c;第 2 行有 2 个球&#xff0c;第 3 行有 3 个球&#xff0c;依此类推。 每一行的球必须是 相同 颜色&#xff0c;且相…...

工业相机解决方案

工业相机是一种特殊类型的相机&#xff0c;适用于恶劣条件&#xff08;如高温、高压和振动&#xff09;下的工作&#xff0c;在控制生产周期、跟踪输送机上的单元、检测超小零件等方面发挥着重要作用。针对工业相机的解决方案&#xff0c;朗观视觉小编认为&#xff0c;可以从以…...

设计一个高效的日志分析系统:自动检测错误日志的实用指南

设计一个高效的日志分析系统:自动检测错误日志的实用指南 在现代软件开发和运维中,日志分析是确保系统稳定性和性能的重要环节。通过对日志的分析,开发者和运维人员可以快速定位问题、优化性能并提高用户体验。本文将介绍如何设计一个日志分析系统,重点关注错误日志的自动…...

英语学习--如果你的父母不听你的话

所有的 Eng中文Eng中文children小孩儿们opposite…在…对面maths数学to take带走&#xff1b;接受&#xff1b;乘坐a way方法&#xff0c;道brave勇敢的few很少more很多more更多able能够when什么时候&#xff1b;…的时候to own拥有a child孩子later一会儿to feel感觉to find找…...

LeetCode:3258.统计满足k约束的子串数量 I(滑动窗口 Java)

目录 3258.统计满足k约束的子串数量 I 题目描述&#xff1a; 实现代码与解析&#xff1a; 滑动窗口 原理思路&#xff1a; 3258.统计满足k约束的子串数量 I 题目描述&#xff1a; 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件&#…...

如果用Java设计MySQL中表级锁、行级锁和间歇锁会是怎么的?

在 MySQL 中&#xff0c;锁机制是确保数据一致性和并发控制的重要手段。MySQL 支持多种锁类型&#xff0c;包括表级锁、行级锁等&#xff0c;每种锁的适用场景、影响范围和实现机制各不相同。我们将逐一介绍它们&#xff0c;并通过模拟代码展示不同锁的实现。 1. 锁类型及其影…...

GIT batch的支持中文的方法和系统建议

GIT batch是window下原生的GIT命令行终端&#xff0c;兼顾了GIT的命令特性&#xff0c;同时也支持很多UNIX的原生的bash交互方法。但是由于编码问题&#xff0c;在使用GIT bach的时候&#xff0c;用户可能会遇到中文支持的问题。这里简单介绍一下GIT batch在Windows系统下如何有…...

骑砍霸主MOD天芒传奇Ⅱ·前传-序章

基于少年包青天第一到三部的闯关夺宝MOD,故事发生在北宋仁宗年间,玩家需要代替包拯寻找天芒,最终完成统一大业.开局可尝试使用暴雨梨花针神器. MOD下载地址: 【免费】PLReminiscence资源-CSDN文库https://download.csdn.net/download/qq_35829452/89851155效果演示: 骑砍2霸…...

神经网络量化基础

1&#xff0c;模型量化概述 1.1&#xff0c;模型量化优点1.2&#xff0c;模型量化的方案 1.2.1&#xff0c;PTQ 理解 1.3&#xff0c;量化的分类 1.3.1&#xff0c;线性量化概述 2&#xff0c;量化算术 2.1&#xff0c;定点和浮点2.2&#xff0c;量化浮点2.2&#xff0c;量化算…...

飞机大战告尾

参考 PPO算法逐行代码详解 链接 通过网盘分享的文件&#xff1a;PlaneWar 链接: https://pan.baidu.com/s/1cbLKTcBxL6Aem3WkyDtPzg?pwd1234 提取码: 1234 10.17关于博客发了又改这件事 悲催的事 今天训练了一早上ppo模型&#xff0c;满怀期待的检测成果时发现一点长进都…...

支持向量机SVM原理详解

SVM原理详解 1、超平面2、SVM原理1. 问题定义2. 分类决策得到约束条件 3. 最大化间隔4. 优化目标 3、凸优化问题1. 原始优化问题优化目标约束条件 2. 拉格朗日乘子法3. 拉格朗日函数分析4. 求解对 w w w 和 b b b 的极值5. 构造对偶问题对偶问题的约束条件&#xff1a; 6、通…...

使用JMeter进行Spring Boot接口的压力测试

使用 Apache JMeter 对接口进行压力测试是一个相对简单的过程。以下是详细的步骤&#xff0c;包括安装、配置和执行测试计划。 1. 下载和安装 JMeter 下载 JMeter 从 JMeter 官方网站https://jmeter.apache.org/download_jmeter.cgi 下载最新版本的 JMeter。 解压缩 将下载的 …...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...