ES 8.14 Java 代码调用,增加knnSearch 和 混合检索 mixSearch
1、pom依赖
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>8.14.0</version></dependency><dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.14.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.9.0</version> <!-- 使用你所需的版本 --></dependency><dependency><groupId>jakarta.json.bind</groupId><artifactId>jakarta.json.bind-api</artifactId><version>2.0.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.13.2</version></dependency><dependency><groupId>org.glassfish</groupId><artifactId>jakarta.json</artifactId><version>2.0.1</version></dependency>
2、ES 8.1的相关接口 主要参考: Java封装Elasticsearch8常用接口方法(一)_elasticsearch8 java接口-CSDN博客

3、EsService 主要 增加knnSearch 和 混合检索 mixSearch
/*** KNN搜索** @param indexName 索引名称* @param vector 向量数据* @param field KNN字段名* @return KnnSearchResponse* @throws Exception*/public SearchResponse knnSearchTestTwo(String indexName, List<Float> vector, String field, List<String> list) throws Exception {ElasticsearchClient client = ESClientPool.getClient();KnnQuery knnQuery = KnnQuery.of(m -> m.field(field).queryVector(vector).numCandidates(100));SearchResponse<ObjectNode> response = client.search(s -> s.index(indexName).query(knnQuery._toQuery()).source(SourceConfig.of(sf -> sf.filter(f -> f.includes(list)))), ObjectNode.class);List<ObjectNode> result = new ArrayList<>();for (Hit<ObjectNode> hit : response.hits().hits()) {ObjectNode source = hit.source();source.put("score", hit.score());result.add(source);}log.info("SearchResponse: {}", JSON.toJSONString(result));ESClientPool.returnClient(client);return response;}/*** 混合查询测试** @param indexName 索引名称* @param searchText 查询文本* @param vector 向量* @param knnField KNN字段名* @return SearchResponse* @throws Exception*/public SearchResponse mixSearch(String indexName, String searchText, String searchField, List<Float> vector, String knnField, List<String> returnFields) throws Exception {ElasticsearchClient client = ESClientPool.getClient();MatchQuery searchTextQuery = new MatchQuery.Builder().field(searchField).query(searchText).build();KnnQuery knnQuery = new KnnQuery.Builder().field(knnField).queryVector(vector).numCandidates(100).build();// 创建must子句的bool查询,这里只有一个should子句BoolQuery boolQuery = new BoolQuery.Builder().must(searchTextQuery._toQuery()) // 必须满足的文本匹配.should(knnQuery._toQuery()) // 可以满足的向量相似性.build();SearchResponse<ObjectNode> response = client.search(s -> s.index(indexName).query(boolQuery._toQuery()).source(SourceConfig.of(sf -> sf.filter(f -> f.includes(returnFields)))), ObjectNode.class);ESClientPool.returnClient(client);return response;}
相关文章:
ES 8.14 Java 代码调用,增加knnSearch 和 混合检索 mixSearch
1、pom依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-client</artifactId><version>8.14.0</version></dependency><dependency><groupId>co.elastic.clients<…...
被腰斩的颍川郡守赵广汉
在颍川,他发明了举报箱,铁腕扫黑除恶。因为曾经在郡府所在地阳翟(禹州)当过县令,熟悉颍川社情民意,所以,任职郡守后雷厉风行,才不到一年,不但制服了骄横的豪门大族&#…...
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 目录管理器(200分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 目录管理器(200分) 🌍 评测功能需要订阅专栏后私信联系清隆…...
关于自学\跳槽\转行做网络安全行业的一些建议
很好,如果你是被题目吸引过来的,那请看完再走,还是有的~ 为什么写这篇文章 如何自学入行?如何小白跳槽,年纪大了如何转行等类似问题 ,发现很多人都有这样的困惑。下面的文字其实是我以前的一个回答&#…...
计算机网络(1) OSI七层模型与TCP/IP四层模型
一.OSI七层模型 OSI 七层模型是国际标准化组织ISO提出的一个网络分层模型,它的目的是使各种不同的计算机和网络在世界范围内按照相同的标准框架实现互联。OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、…...
认识QML
为什么使用Qt Quick? Qt4的设计用于满足开发者在主流桌面操作系统上有一套表现一致的窗口组件可以 使用。如今Qt的使用者面临了新的问题,他们需要提供可触碰交互的用户界面以满 足软件界面需求,并在主流桌面操作系统和移动操作系统上实现这些…...
llama-factory微调chatglm3
一、定义 案例/多卡 二、实现 案例 1. 下载chatglm3-6b-32k模型 2. 配置数据集微调指令 CUDA_VISIBLE_DEVICES0,1 llamafactory-cli train \--stage sft \--do_train True \--model_name_or_path /home/chatglm3-6b-32k \--finetuning_type lora \--template chatglm3 \--d…...
大文件上传实现
分片上传 将大文件分割成多个小片(chunk),逐个上传。每个片上传成功后,服务器可以返回确认信息。所有片上传完成后,服务器端将这些片重新组合成原始文件。 以下是一个简单的分片上传的前端实现示例: func…...
为何Proteus用户争相拥抱SmartEDA?揭秘背后的强大吸引力!
在电路设计与仿真领域,Proteus一度以其稳定性能和丰富功能赢得了众多用户的青睐。然而,近年来,越来越多的Proteus用户开始转向SmartEDA,这一新兴电路仿真软件正迅速崭露头角,成为行业内的翘楚。那么,究竟是…...
万界星空科技QMS质量管理介绍
产品的生产质量是企业发展之根本,对所有企业来说,建立完善质量控制体系,对企业生产经营以及发展竞争具有至关重要的影响,可以说是企业质量保证的防火墙。QMS质量管理系统对任何一家企业都具有重要意义,可帮助企业提高生…...
神经网络 torch.nn---nn.LSTM()
torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) LSTM — PyTorch 2.3 documentation LSTM层的作用 LSTM层:长短时记忆网络层,它的主要作用是对输入序列进行处理,对序列中的每个元素进行编码并保存它们的状态,以便后续的处理。 …...
Web前端JSP软件:深度解析与探索之旅
Web前端JSP软件:深度解析与探索之旅 在当今数字化时代,Web前端技术日新月异,JSP(Java Server Pages)软件作为其中的佼佼者,扮演着举足轻重的角色。本文将从四个方面、五个方面、六个方面和七个方面&#x…...
人生的乐趣,在于对真知的追求
子曰:朝闻道,夕死可矣! 孔子说:早上听到关于世界的真理,哪怕晚上就die了都可以。 这句话很有力量而经常被人引用,表达出我们如何看待沉重的肉身和精神世界。 我们的生活目的:道。 —— 要了解…...
IPython大揭秘:神奇技巧让你掌握无敌编程力量!
IPython技巧 基础技巧文件操作技巧输入输出技巧魔术命令技巧调试技巧程序性能优化技巧输入输出重定向技巧魔术命令控制技巧自定义显示格式技巧多线程多进程技巧异常处理技巧数据可视化技巧自定义魔术命令技巧安装扩展包技巧Jupyter Notebook集成技巧文档显示技巧代码块执行技巧…...
逻辑卷管理器 (LVM) 简介
古老的 e5 主机目前有这些存储设备 (硬盘): 系统盘 (M.2 NVMe SSD 480GB), 数据盘 (3.5 英寸 SATA 硬盘 4TB x2). 窝决定使用 LVM 对数据盘进行管理. 逻辑卷管理器 (LVM) 可以认为是一种 (单机) 存储虚拟化 技术. 多个物理存储设备 (PV) 组成一个存储池 (VG), 然后划分虚拟分区…...
Swift开发——弱占用
自动引用计数(Automatic Reference Counting,ARC),是Swift语言管理类的实例的方式。当创建某个类的一个新实例后,ARC自动为新实例分配内存空间,用于保存实例的类型和存储属性,当将该实例赋给常量、变量或其他实例的属性…...
化工电力系统RFID无线测温技术的重要性。
在现代工业体系中,化工电力系统的安全与效率对于整个生产链的顺畅运行至关重要。在日常工作中,由于设备制造的原因,设备受环境污染的原因、设备长期运行、严重超载运行、触点氧化、电弧冲击等原因造接触电阻增大,因此在运行时往往不断发热,温度不断上升,给设备安全运…...
Linux系统:线程互斥
Linux系统:线程互斥 线程互斥互斥锁 mutex互斥锁原理 常见的锁死锁自旋锁 spinlock其它锁 线程互斥 讲解线程互斥前,先看到一个抢票案例: class customer { public:int _ticket_num 0;pthread_t _tid;string _name; };int g_ticket 10000…...
【网络协议栈】TCP/IP相关知识点收集
TCP/IP知识点收集 1 TCP分段 在TCP/IP协议栈中,“MSS”(Maximum Segment Size)是一个关键参数,它指定了TCP协议在发送数据时可以使用的最大数据段(segment)的大小。这个参数是TCP连接建立时通过三次握手&…...
Java开发中的常用字段校验注解
在 Java 开发中,数据校验是确保应用程序的数据完整性和一致性的重要步骤。Java 提供了一系列注解来简化数据校验的过程,以下是一些常用的字段校验注解及其示例代码: NotNull NotNull 用于确保字段不为 null,适用于任何类型的字段…...
利用快马平台快速构建mcporter数据转换工具原型,十分钟验证数据管道设计
最近在做一个数据迁移项目时,遇到了需要频繁转换数据格式的需求。传统方式下,光是搭建开发环境、编写基础代码就要花上大半天时间。这次尝试用InsCode(快马)平台快速构建了一个mcporter数据转换工具原型,整个过程出乎意料地顺畅。 明确核心需…...
终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题
终极指南:AutoDock Vina如何轻松处理含金属元素的分子对接难题 【免费下载链接】AutoDock-Vina AutoDock Vina 项目地址: https://gitcode.com/gh_mirrors/au/AutoDock-Vina 你是否曾在使用AutoDock Vina进行分子对接时,遇到"Atom type Pd i…...
实测2-5分钟:CogVideoX-2b生成速度与画质平衡的真实体验报告
实测2-5分钟:CogVideoX-2b生成速度与画质平衡的真实体验报告 1. 从文字到视频:CogVideoX-2b能做什么? 想象一下,你只需要输入一段文字描述,就能在几分钟内获得一段6秒的高清视频。这不是科幻电影里的场景,…...
Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读
Stable Diffusion XL 1.0开源大模型教程:灵感画廊app.py核心逻辑解读 “见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。” 如果你对AI绘画感兴趣,一定听说过Stable Diffusion XL 1.0这个强大的开源模型。但面对复杂的参…...
【故障】解决ssh连接linux卡着不动的问题
1、原因使用xshell连接一台linux机器,发现连接不上,一直都开在连接这个界面,最后超时才停止。2、排查(1)首先,检查下防火墙或者selinuxsystem status firewalld #检查服务是否处于非Running的状态getenforc…...
GB28181协议实战:WVP开源项目+ZLM流媒体服务联调配置详解
GB28181协议实战:WVP开源项目ZLM流媒体服务联调配置详解 在视频监控领域,GB28181协议作为国家标准协议,已经成为设备互联互通的重要基础。而将WVP(Web Video Platform)开源项目与ZLM(ZLMediaKit)…...
别再一上来就搞ETL了!聊聊我们团队在数据治理项目里踩过的第一个坑:数据资产划分
数据治理第一步:为什么跳过资产划分会让你的ETL工程翻车? 凌晨三点的办公室,咖啡杯已经见底,ETL管道却因为数据源混乱再次报错——这是许多数据团队的真实噩梦。我们团队在去年启动企业级数据治理项目时,也曾陷入"…...
告别爆显存!在16G显卡上高效训练SDXL LORA的完整配置流程
16G显卡极限优化:SDXL LORA训练全流程实战指南 引言 当你手握一块RTX 4060 Ti或4070这样的16G显存显卡,想要尝试SDXL LORA训练时,是否常被爆显存的恐惧支配?别担心,这不是硬件性能的终点,而是优化艺术的起点…...
【ybtoj】【KMP】【例题1】子串查找
【例题1】子串查找Link解题思路CodeLink 传送门 题目 解题思路 kmp模板题 找了超级多篇KMP的博客,一直都看不懂 直到……直到我找到了光(bushi) 这篇博客直接把我升华 Code #include <iostream> #include <cstring> #include…...
终极WZ文件编辑器:从地图设计到资源定制的完整工作流
终极WZ文件编辑器:从地图设计到资源定制的完整工作流 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacker-resurrected是一…...
