【springboot整合ES】springboot整合ES

news2024/11/25 12:26:31

springboot整合ES

在Springboot整合ES提供了启动依赖jar。 该jar包封了一个类: RestHighLevelClient
该类可以对象ES中各个接口进行相应的操作。

1. 新建项目

创建springboot工程并导入相关的依赖 2.3.12.RELEASE。最新版spring boot2.7.5中RestHighLevelClient已过时

在这里插入图片描述

2. 创建配置类

创建一个配置类,返回 RestHighLevelClient

package com.aaa.config;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;

/**
 * @author shang tf
 * @createTime 2022/11/10 18:33
 * @since 1.0.0
 */
public class ESConfig {
    //springboot连接ES提供的一个客户端类。RestHighLevelClient
    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client=new RestHighLevelClient(
                RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
        );
        return client;
    }
}

RestHighLevelClient的常见API

@Autowired
private RestHighLevelClient client;
操作名称相关API
创建ES的索引client.indices().create(…)
判断索引是否存在client.indices().exists(…)
删除索引client.indices().delete(…)
    //创建ES的索引
    @Test
    void createIndex() throws Exception{
        //创建CreateIndexRequest请求类---对应索引的创建需要的参数 都封装到该类中
        CreateIndexRequest indexRequest=new CreateIndexRequest("qy156");
        //关于对索引操作的功能都IndiceClient类中
        CreateIndexResponse indexResponse = client.indices().create(indexRequest, RequestOptions.DEFAULT);

        System.out.println("是否创建索引成功:"+indexResponse.isAcknowledged());
    }

    //判断索引是否存在.
    @Test
    public void isExist() throws IOException {
        GetIndexRequest getIndexRequest=new GetIndexRequest("qy156");
        boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
        System.out.println("索引是否存在:"+exists);
    }

    //删除索引:
    @Test
    public void delete() throws IOException{
        DeleteIndexRequest deleteIndexRequest=new DeleteIndexRequest("qy158");
        AcknowledgedResponse delete = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);

        System.out.println("是否删除成功:"+delete.isAcknowledged());
    }
操作名称相关API
往索引中添加文档client.index(…)
根据id查询文档内容client.get(…)
根据id删除文档client.delete(…)
修改文档client.update(…)
    //往索引中添加文档
    @Test
    public void insertDoc() throws IOException {

        IndexRequest indexRequest=new IndexRequest("qy156");
        //指定文档的id值
        indexRequest.id("1");
        //指定文档的内容
        Student student=new Student("李四","郑州","男",18);
        indexRequest.source(JSON.toJSONString(student), XContentType.JSON);

        IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);

        System.out.println("结果:"+index.getResult());
    }

    //根据id查询文档内容
    @Test
    public void findByid() throws IOException {
        GetRequest getRequest=new GetRequest("qy156");
        getRequest.id("1");
        GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);
        //getSourceAsMap:拿到的结果封装为Map
        Map<String, Object> sourceAsMap = getResponse.getSourceAsMap();
        System.out.println(sourceAsMap.get("name")+"===="+sourceAsMap.get("sex"));

        //getSourceAsString:拿到的结果为一个字符串
        String sourceAsString = getResponse.getSourceAsString();
        System.out.println(sourceAsString);
    }

    //根据id删除文档
    @Test
    public void deleteByid() throws  IOException{
        DeleteRequest deleteRequest=new DeleteRequest("qy156");
        deleteRequest.id("1");
        DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
        System.out.println(delete.getResult());
    }

    //修改文档
    @Test
    public void update() throws  IOException{
        UpdateRequest updateRequest=new UpdateRequest("qy156","1");
        Student student=new Student();
        student.setName("张学友");
        updateRequest.doc(JSON.toJSONString(student),XContentType.JSON);

        UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
        System.out.println(update.getResult());
    }

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

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

相关文章

python_爬虫

定时、定量、制定目标的数据搜集程序。 技术库 网络请求 urllibrequests&#xff08;三方&#xff09;/ urllib3selenium&#xff08;UI自动测试、动态js渲染&#xff09;appium&#xff08;手机App的爬虫或UI测试&#xff09; urllib requests 基于urllib和urllib3封装的…

什么是“孤岛效应”? ----防孤岛保护装置

防孤岛保护是对分布式光伏电站有着重要保护作用的。即当电网出现电压高、电压低、频率高、频率低故障时&#xff0c;光伏并网开关及时跳闸。当电网恢复供电并且电压和频率达到允许值时&#xff0c;并网开关要自动合闸。这样的目的是在为了国家电网不受太大影响的情况下&#xf…

理解透C语言一维数组,二维数组这一篇就够啦!

前言 &#x1f496;作者&#xff1a;龟龟不断向前 ✨简介&#xff1a;宁愿做一只不停跑的慢乌龟&#xff0c;也不想当一只三分钟热度的兔子。 &#x1f47b;专栏&#xff1a;C初阶知识点 &#x1f47b;工具分享&#xff1a; 刷题&#xff1a; 牛客网 leetcode笔记软件&#xff…

网站部署:使用Nginx部署vue项目到阿里云服务器

最近租了个阿里云的服务器&#xff0c;想使用Nginx把刚做好的网站部署上去 下载Nginx 目前yum已经有了Nginx的源&#xff0c;因此可以直接用yum下载和安装 yum -y install nginx默认的安装位置为/etc/nginx 默认的项目位置为/usr/share/nginx 如果安装失败检查是否安装了zli…

渗透测试-CTF文件类型操作

识别文件类型 文件分离 文件合并 识别文件类型 当文件没有后缀名或者有后缀名无法正常打开时&#xff0c;根据识别的文件类型来修改后缀名即可正常打开文件。 使用场景&#xff1a;不知道后缀名&#xff0c;无法打开文件。 第一种方式&#xff1a;kali中使用 file 文件名 f…

173:vue+openlayers:解决国内openstreetmap地图加载不出来的问题(代码示例)

第173个 点击查看专栏目录 近来写程序,发现openlayers用OSM方式来加载OpenStreetMap地图,一片爆红,瓦片加载不出来。 本示例的目的是介绍演示如何在vue+openlayers中解决OpenStreetMap地图在国内被DNS污染,加载不出来瓦片的问题,通常我们是直接引用OSM,这里采用的是XYZ方…

2022年11月第十四届蓝桥杯校模拟赛详解+代码(一)

“须知少时凌云志&#xff0c;自许人间第一流” 鄙人11月八号有幸参加学校蓝桥杯校选拔赛&#xff0c;题型为5道填空题&#xff0c;5道编程题&#xff0c;总时间为小时。奈何能力有限&#xff0c;只完成了5道填空和3道编程大题&#xff0c;现进行自省自纠&#xff0c;分享学习&…

国产ETL工具 BeeDI 产品“实时同步“之 高阶 功能组件

BeeDI 提供“ 实时”企业数据集成。实时组件通过实时处理和传输业务数据的能力&#xff0c;增强了BeeDI的批处理功能。为满足当下复杂的业务需求&#xff0c;IT部门需要实时集成以加快核心业务流程和信息流。使用实时功能&#xff0c;IT部门可以使用统一界面&#xff0c;从BeeD…

【Mybatis】mybatis使用与理解

1. mybatis基础环境搭建 若想使用mybatis&#xff0c;需要有如下两个jar包&#xff1a;①mybatis的核心jar包。②数据库驱动包。 &#xff08;想使用别人提供的服务就必须要有别人的jar包&#xff1b;mybatis是和数据库打交道的&#xff0c;那么你的程序中&#xff0c;数据库的…

【MySQL高级】MySQL的锁机制

目录 概述 MyISAM 表锁 InnoDB行锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;。 在数据库中&#xff0c;除传统的 计算资源&#xff08;如 CPU、RAM、I/O 等&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共…

重装系统后要安装哪些驱动

​重装win10后需要安装驱动吗?win10系统比win7系统高级的地方在于系统内置了很多驱动&#xff0c;这可以省去用户很多安装时间&#xff0c;下面小编来告诉大家重装系统后要安装的驱动有哪些。 工具/原料&#xff1a; 系统版本&#xff1a;windows10系统 品牌型号&#xff1…

mysql8其它新特性

文章目录MySQL8.0新特性新特性1&#xff1a;窗口函数序号函数ROW_NUMBER()函数RANK()函数DENSE_RANK()函数分布函数PERCENT_RANK()CUME_DIST()函数前后函数LAG(expr,n)函数LEAD(expr,n)函数首尾函数FIRST_VALUE(expr)函数LAST_VALUE(expr)函数其它函数NTH_VALUE(expr,n)函数NTI…

Docker 常用命令大全

个人理解 docker中的镜像 就像是咱们java 中的Class &#xff0c;而容器呢 是基于这个镜像构建出的实例 类似于咱java 中 根据Class构造出的一个个实例对象 &#xff0c;本人是初学者 理解有误还请见谅&#xff0c;并麻烦您说说您的看法让彼此相互学习… 按我理解 简言之 doc…

Java-日期类,正则实验

1. 随机产生两个日期时间&#xff0c;输入按时间先后顺序输出 public class RandomDate {SuppressWarnings("deprecation")public static void main(String[] args) throws ParseException {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&…

二分查找 【模板+中间值问题】

全文目录&#x1f603;前言&#x1f615;二分查找动图演示&#x1f634;代码模板❗️ 使用哪个模板问题 ❗️&#x1f4a2; mid为何1问题 &#x1f4a2;&#x1f603;前言 二分查找也称折半查找&#xff08;Binary Search&#xff09;&#xff0c;它是一种效率较高的查找方法。…

[解决]github上传大文件卡住

0x00 需求 github目前的策略是超过50M的文件不允许上传&#xff0c;推荐使用lfs。 0x01 操作 再把之前提交的commit 回滚&#xff1a; git reset --hard commitId 在配置lfs&#xff1a; git lfs install git lfs track "*.zip" git lfs track "*.jar" git…

【K8S】亲和、反亲和、污点、容忍

文章目录【K8S】亲和、反亲和、污点、容忍K8s调度亲和与反亲和Pod和Node硬亲和和软亲和requiredDuringSchedulingIgnoredDuringExecution&#xff1a;硬策略preferredDuringSchedulingIgnoredDuringExecution&#xff1a;软策略污点与容忍污点&#xff08;Taint&#xff09;污点…

Python学习----基础语法2

布尔类型 布尔本质上是 1 和 0 if 基本语法格式 语法还是比较简单的 , 需要注意的是 , Python是通过空格缩进来判断代码块归属的 ( 不像java这么通过 花括号进行区分 ) , 默认是四个空格 , 你也可以使用两个或者三个等 , 只要全部统一即可 , 但是编辑器会有提示 , 规范是四…

一文带你快速了解ptrdiff_t

简介 ptrdiff_t是C/C标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。 ptrdiff_t定义在stddef.h&#xff08;cstddef&#xff09;这个文件内。 ptrdiff_t通常被定义为long int类型。 ptrdiff_t定义在C99标准中。 标准库类…

【前端】Vue+Element UI案例:通用后台管理系统-用户管理:Form表单填写、Dialog对话框弹出

文章目录目标代码0.页面结构1.新增按钮和弹出表单&#xff1a;结构2.新增按钮和弹出表单&#xff1a;点击新增弹出表单3.表单样式4.表单验证5.表单的提交和取消功能&#xff1a;接口、mock相关准备6.表单的提交和取消功能提供的数据和接口1-operateFormLabel.js5-user.js效果总…