ES 8.14 Java 代码调用

news2024/12/26 12:07:48

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;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1821573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CS5518芯片设计|替代GM8775设计方案|MIPI转LVDS芯片方案|DSI转LVDS芯片方案

CS5518支持常见的1920*1080分辨率的屏&#xff0c;支持视频格式为 FULL HD&#xff08;1920 x 1200&#xff09;。为MIPI DSI 转LVDS 双通道桥接芯片&#xff0c;实现将MIPI DSI信号转换为单/双通道 LVDS输出功能&#xff0c;MIPI 支持1/2/3/4 通道可选,支持 4Gbps 速率。LVDS …

智慧校园信息系统:打造高效智能化教育管理

在现代社会&#xff0c;智慧校园信息系统正在逐渐成为推动教育管理高效智能化的重要工具。随着科技的不断进步&#xff0c;传统的教育方式已经无法满足当代学生的需求。如何利用信息技术打造高效智能化的教育管理模式成为了学校和教育机构共同关注的话题。智慧校园信息系统的出…

陕西移动联合中兴通讯,赋能5G RedCap智慧工厂建设

前不久&#xff0c;陕西移动联合中兴通讯、高新兴等产业伙伴在中兴通讯西安智能终端生产基地顺利完成5G RedCap在智慧工厂的应用实践。本次实践证明了5G RedCap在智慧工厂场景下的应用可行性&#xff0c;为RedCap在工业智能制造行业的应用打下基础。   5G RedCap技术是5G-A实现…

机器学习在医学领域中的应用|文献精析·24-06-13

小罗碎碎念 2024-06-13&#xff5c;文献精析&#xff1a;机器学习在医学领域中的应用 为了系统性地和大家梳理一下机器学习在医学领域中的应用&#xff0c;我特意去找了一篇文献&#xff0c;把其中有价值的信息筛选出来了。但是我没选的内容不代表不重要&#xff0c;感兴趣的可…

单片机课设-基于单片机的电子时钟设计(仿真+代码+报告)

基于单片机的电子时钟设计 前言一、课设任务是什么?二、系统总体方案硬件设计2.1 系统硬件总体设计2.2 键盘电路设计2.3 DS1302实时时钟芯片电路设计2.4 复位电路2.5 LCD电路设计 三、软件设计3.1 主程序流程图3.2 主要程序设计代码3.3 修改时间函数3.4 扫描键盘函数 四、仿真…

多应用对接企业微信授权和扫码登录

多应用对接企业微信授权和扫码登录是一种常见的企业级解决方案&#xff0c;它可以帮助企业实现统一的身份验证和管理&#xff0c;提升用户体验和安全性。本文将介绍如何实现多应用对接企业微信授权和扫码登录的方法和步骤。 # 第一步&#xff1a;注册企业微信开放平台应用 首…

【原创】springboot+mysql社区住户综合管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Stable diffusion3效果比midjourney强很多吗,未来会开源吗?

经过一个多月的期待&#xff0c;Stable Diffusion 3&#xff08;SD3&#xff09; 终于向会员开放了API接口&#xff0c;尽管每个用户的使用配额相对有限&#xff0c;据用户反馈&#xff0c;生成六张图像便可能耗尽配额。 SD曾依靠开源策略与竞争对手抗衡&#xff0c;但目前似…

多语言模型中的自主沟通代理CAMEL;通用的人工智能基准ARC-AGI;2D重光模型Neural Gaffer;从低分辨率到高分辨率的3D模型转换

✨ 1: CAMEL 致力于研究多语言模型中的自主沟通代理 CAMEL&#xff08;Communicative Agents for “Mind” Exploration of Large Language Model Society&#xff09;是一个旨在研究自动化沟通代理的开源框架&#xff0c;借助大规模语言模型&#xff08;LLM&#xff09;&…

CST Studio Suite 基础操作实验(稳恒电流的电场与磁场)

前言 前置的基础操作可见笔者之前一篇文章&#xff0c;在此不再赘述 因为整个实验要求都要用英文&#xff0c;有些不便更改部分的英文就没翻译了&#xff0c;见谅 CST Studio Suite 基础操作实验&#xff08;静电场&#xff09;-CSDN博客 核心步骤 无限长设置 假如是z轴上的…

《分析模式》第2章中文UML图(已修正原书错误)(2.1-2.6)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 &#xff08;1&#xff09;已用UML、OCL表示&#xff0c;并翻译为中文。 &#xff08;2&#xff09;已修正原书图存在的错误&#xff08;多重性、角色&#xff09;&#xff0c;之前的…

前端必看的2024 年 7 个 Web 前端开发趋势【文末福利=网盘分享2024web前端技术资料,学习资源】

目录 前言 趋势一&#xff1a;新的样式解决方案和组件库将持续涌现 趋势二&#xff1a;利用 AI 来增强开发流程 趋势三&#xff1a;SSR 和 SSG 两种框架之间的竞争将会愈演愈烈 趋势四&#xff1a;前端、后端和全栈开发之间的界限将越来越模糊 趋势五&#xff1a;越来越多的人…

江协科技51单片机学习- p5 LED灯闪烁

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记&#xff0c;在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用&#xff1a; 51单片机入门教程-2…

轻兔推荐 —— Obsidian

via&#xff1a;轻兔推荐 - https://app.lighttools.net/ 简介 Obsidian 是一个强大的知识管理和笔记应用程序&#xff0c;它基于本地文件存储&#xff0c;支持Markdown格式&#xff0c;并提供丰富的插件生态系统。 - 通过双向链接和图谱视图&#xff0c;帮助用户发现笔记之间…

掌握midjourney系列:8 个角色设计关键词

Midjourney V6的角色引用功能非常强大&#xff0c;可以让多张图片生成的角色风格保持一致。在实现同一角色的多张场景图片之前&#xff0c;我们需要先设计好基础角色。 以下是我总结的Midjourney中人物设计套路的常用提示&#xff0c;很高兴与大家分享。 1、角色设定表&#…

杏仁核亚区在情绪处理中的特化

摘要 杏仁核对人类的恐惧情绪处理至关重要。然而&#xff0c;目前的研究未能揭示其特异性&#xff0c;有证据表明杏仁核也会对其他情绪做出反应。鉴于情绪功能对日常生活和心理健康的重要性&#xff0c;我们需要更加细致地了解杏仁核在情绪加工中的作用&#xff0c;特别是与恐…

短剧系统源码短剧平台开发短剧小程序APP短剧模版Java源码

一.管理端设置及操作 1.系统配置 系统的配置项都在该列表中,使用前请配置好参数 2.签到积分设置 签到可以获取设置积分,连续签到按照设置的积分规则走,积分可以兑换余额,兑换比例按照配置104,余额可以消费 3.用户中心 所有的用户注册后都会在该列表展示,可以查看用户详情,也…

Spring-事件

Java 事件/监听器编程模型 设计模式-观察者模式的拓展 可观察者对象(消息发送者) Java.util.Observalbe观察者 java.util.Observer 标准化接口(标记接口) 事件对象 java.util.EventObject事件监听器 java.util.EventListener public class ObserverDemo {public static vo…

神经网络 torch.nn---nn.LSTM()

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) LSTM — PyTorch 2.3 documentation LSTM层的作用 LSTM层:长短时记忆网络层&#xff0c;它的主要作用是对输入序列进行处理&#xff0c;对序列中的每个元素进行编码并保存它们的状态&#xff0c;以便后续的处理。 …

H5的3D展示有可能代替PC传统3D展示么?

H5的3D展示技术正在快速发展&#xff0c;并且随着5G网络的普及和手机硬件性能的提升&#xff0c;H5的3D展示在某些方面已经能够接近甚至超越传统PC上的3D展示效果&#xff0c;比如 博维数孪 的渲染能力及效果。但H5和PC的3D展示互相之间是各有优势领域和行业支持&#xff0c;短…